如何将v [i]分配给一系列整数(v的类型是向量),而不是最初填充内部
答案 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 );
我不知道你的意思是分配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);