我一直想知道这个问题,今天我终于到了需要得到正确答案的时刻。
即:我很困惑我应该如何存储列表/vector/?动态创建的对象?
例如:我有这个程序将从文件中读取有关连接的数据,然后在此基础上创建 node
s(其中包含连接信息)对象。
所以问题是:我应该使用 std::vector<node>
吗?在 for
中循环创建临时对象和 push_back()
他们或使用std::vector<node*>
和 push_back()
动态分配的指针 node
s 然后在程序结束时删除它们?
我确实有我想要存储的元素的数量。
或者也许有更好的方法,但我不知道。
最佳答案
哦,如果你有一个已知的大小......用那个已知的大小分配你的 vector (以消除加载期间调整大小的开销),那么加载与 memcpy()
。它只会按预期堆叠您的值(value)观。比指针间接更高效。
如果您的元素是多态的,您将需要指针。如果您担心清理内存(您应该担心),请考虑使用:http://www.boost.org/doc/libs/1_50_0/libs/ptr_container/doc/ptr_vector.html
[编辑]
如果一切都是恒定大小,还可以考虑 http://www.boost.org/doc/libs/1_50_0/doc/html/array.html .它就像一个 C 数组,但没有任何调整大小开销和 STL 支持……如果您真的需要速度。
关于c++ - 存储动态创建对象的列表/vector 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022560/