gpt4 book ai didi

C++ 将 vector 推回 vector

转载 作者:行者123 更新时间:2023-11-30 01:17:53 25 4
gpt4 key购买 nike

这是我创建的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com