我正在研究物理引擎相关的项目。在下面的C++代码:作为另一个矢量数据类型的`struct`中的C++ :: vector矢量
#include <iostream>
#include <vector>
struct Vector3
{
float x;
float y;
float z;
};
struct object
{
std::vector < std::vector <Vector3> > set_vertices;
int ID;
int Type;
};
class World
{
public:
std::vector<object> objects;
private:
// other members
};
int main (void)
{
World world;
// How to fill in "objects" of "world"?
// Is this safe to do?
world.objects.resize(5);
// What about the way of allocating "set_vertices" below?
for(size_t i=0; i<world.objects.size(); i++)
{
world.objects[i].set_vertices.resize(12, std::vector <Vector3>(3));
for(size_t j=0; j<world.objects[i].set_vertices.size(); j++)
{
for(size_t k=0; k<world.objects[i].set_vertices[j].size(); k++)
{
world.objects[i].set_vertices[j][k].x = 0.0f;
world.objects[i].set_vertices[j][k].y = 0.0f;
world.objects[i].set_vertices[j][k].z = 0.0f;
world.objects[i].ID = i;
world.objects[i].Type = 0;
}
}
}
return 0;
}
是我分配的内存为world
安全objects
的方式吗?会有任何内存相关的问题?是否有更好的方式动态初始化objects
(即不在构造函数中)?如果是这样,怎么样?谢谢。
对我来说似乎完全没问题。当然有效率的问题:在其他向量中使用std :: vectors意味着你正在复制向量很多,在C++ 11中使用智能指针 – pm100
可能更好一些,这些指针大多是非问题的 –