C++ 将 vector 推回 vector

标签 c++ vector push back

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

相关文章:

c - Stack 内容中保存的数据不断变化,无法递增

c++ - 避免 printscreen 函数渲染文本

c++ - 你如何构造一个 typedef 来记住方法

SDL_Rect 上的 C++ SDL x 和 y 轴

c++ - Windbg C++ 如何打印 vector 内容

c++ - 如何获得支持负索引的 std::vector ?

c++ - 类型说明符的组合无效?

r - 使用 ggplot2 的 Hodogram

javascript - Node.js - 我如何为我的网络应用程序设置这个小服务?

git - 获取默认远程推送和默认远程分支