저는 물리 엔진 관련 프로젝트를 진행하고 있습니다. 아래의 C++ 코드에서 :C++ : 다른 벡터의 데이터 유형으로 struct의 벡터 벡터
#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
을 사용하는 것이 더 좋을 것입니다. –