分配矢量

时间:2010-12-29 12:09:27

标签: c++ vector

如何将v [i]分配给一系列整数(v的类型是向量),而不是最初填充内部

3 个答案:

答案 0 :(得分:3)

你的意思是将std :: vector初始化为一系列整数吗?

int i[] = {1, 2, 3, 4, 5};
std::vector<int> myVector(i, i+ (sizeof(i)/sizeof(int)));

如果您打算创建一些元素的向量,那么您可以使用它们的索引值执行赋值。这里,以下语句声明并初始化一个向量,其元素默认初始化为0。

std::vector<int> myVector(5); // constructs a vector of size five integers.

for (int x = 0; x < 5; x++)
    myVector[x] = i[x];     // assign values using subscript [..] 

但我认为更好的方法是@CashCow在他的回答中提到。

另外,请注意,您还可以预先分配内存以将元素添加到向量中,同时避免重复的内存分配。

例如:

std::vector<int> myVector; // empty vector for integers
myVector.reserve(5); // pre-allocates memory for five integers

for (int i = 0; i < 5; i++) // now, you can add your elements
    myVector.push_back(i);

如果您知道元素的大小,那么预先分配内存通常是一个好主意,即在性能是一个重要因素的情况下,如果元素数量很多的话。

答案 1 :(得分:2)

如果你有任何具有迭代器特征的东西,你可以使用vector的assign方法:

std::vector<int> v;
v.assign( iterStart, iterEnd );
  • iterStart应该是* iterStart是您要添加的第一个值。
  • iterEnd应该是一个结束,这是一个终止条件
  • ++ iter会将你带到输入系列中的下一个迭代器。

我不知道你的意思是分配v [i]。您无法为系列指定元素。如果要将某个位置的系列编写到现有向量中,可以使用insert而不是assign。

答案 2 :(得分:1)

添加项目的常用方法是调用std :: vector&lt;&gt; push_back()方法。

std::vector<int> myVector;
myVector.push_back(5);
myVector.push_back(10);
myVector.push_back(3);