这是我创建的 vector ;
std::vector<std::vector<Vertex*>*> Vertices;
而且我无法弄清楚如何推迟 std::vector<Vertex*>
进入外部
vector 。
所以我想做的是:
Vertices.push_back(new vector().push_back(new Vertex()));
但我不确定正确的方法是什么。希望你们明白这一点。
最佳答案
虽然有时创建一个指针 vector (最好是智能指针)是可以的,但是创建一个指向 vector 的指针 vector 从来都不是一个好主意:这无缘无故地使你的内存管理复杂化。
最好的解决方案是使用顶点对象 vector ,如下所示:
std::vector<std::vector<Vertex> > vertices;
这会让你像这样反击:
vector<Vertex> vv;
vv.push_back(Vertex(...));
vertices.push_back(vv);
如果您想要一个具有多态行为的 Vertex
的后代 vector ,请使用指针 vector 的 vector :
std::vector<std::vector<Vertex*> > vertices;
...
vector<Vertex*> vv;
vv.push_back(new Vertex(...));
vertices.push_back(vv);
请注意,如果您这样做,您将无法释放 vector 中的 Vertex
对象。更好的解决方案是使用智能指针 - 例如,unique_ptr
,如下所示:
std::vector<std::vector<unique_ptr<Vertex> > > vertices;
unique_ptr
会负责自动释放 Vertex
对象。
关于C++ 将 vector 推回 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445528/