我有一个对象向量(vector<Vertex> setOfVertices
),我想在此向量中创建指定数量的新对象。这是一种正确的方法吗?
for (int i = 0; i < 10; i++)
setOfVertices.push_back(Vertex());
或者这样做更好:
for (int i = 0; i < 10; i++)
{
Vertex * V = new Vertex();
setOfVertices.push_back(*V);
}
在后一种情况下,我是否需要编写某种析构函数?
或者放弃std:vector并使用数组会更好吗?
答案 0 :(得分:0)
您可以使用std::vector::insert
的“填充”重载:
setOfVertices.insert(setOfVertices.end(), 10, Vertex());
没有必要自己分配内存,std::vector
会为你做这件事。您需要做的就是为要复制的新元素传递一个“引用”Vector
。
答案 1 :(得分:0)
second
示例存在内存泄漏。
如果你想要的只是一个“填充”功能,那么setOfVertices.insert(setOfVertices.end(), 10, Vertex());
就足够了。
但是,如果你想要的是插入不同的Vertex
对象,那么
// Make sure only a single memory allocation takes place.
setOfVertices.reserve(setOfVertices.size() + 10);
for (int i = 0; i < 10; i++)
setOfVertices.push_back(Vertex(i));