矢量C ++内存分配

时间:2013-05-30 13:28:55

标签: c++ memory memory-management vector

我想创建一个代表某种结构的元素向量。

问题是我不知道结构会有多少元素,因为数字会经常变化,我真的不知道如何创建矢量。

如何制作?

为了更清楚:

我在创建矢量时看到了这样的事情:

std::vector<structureType> vectorName(nrOfElements);

我不知道元素的数量以及在括号之间写什么。

3 个答案:

答案 0 :(得分:12)

如果默认构造矢量,则会得到一个空的:

std::vector<structureType> vectorName; // holds 0 elements

然后你可以将元素推入向量,增加其大小(另见vector modifiers):

vectorName.push_back(someStructureTypeInstance);

这可能适合您的需求。如果您担心将来的内存重新分配,可以在构建向量后使用std::vector::reserve

std::vector<structureType> vectorName; // holds 0 elements
vectorName.reserve(100); // still 0 elements, but capacity for 100

答案 1 :(得分:1)

  

我不知道在括号之间写什么

什么都不写))在这种情况下,你将创建一个空矢量,可以用std::vector::push_back()

增长

更新:不要忘记删除空()以避免vexing parse

答案 2 :(得分:1)

您可以通过插入和/或删除元素来更改向量包含的元素数。您专门寻找向量的方法insertpush_back / emplace_backresizepop_backerase

您可以在任何C ++参考中找到方法的描述(例如,在“修饰符”部分中查看here)以及您选择的C ++初学者书中。