如何将多个int一次传入vector?
目前,我必须多次使用vector.push_back()
。
我目前使用的代码是
std::vector<int> TestVector; TestVector.push_back(2); TestVector.push_back(5); TestVector.push_back(8); TestVector.push_back(11); TestVector.push_back(14);
有没有办法只使用vector.push_back()
一次,只是将多个值传入向量?
尝试将数组传递给向量:
int arr[] = {2,5,8,11,14}; std::vector<int> TestVector(arr, arr+5);
你总是可以调用std :: vector :: assign来将数组赋值给vector,调用std :: vector :: insert来添加多个数组。
如果你使用C ++ 11,你可以尝试:
std::vector<int> v{2,5,8,11,14};
要么
std::vector<int> v = {2,5,8,11,14};
你也可以使用vector :: insert
std::vector<int> v; int a[5] = { 1,2,3,4,5 }; v.insert(v.end(), a, a+5);
编辑:当然,在现实世界的编程中,您应该使用非常丑陋但安全的v.insert(v.end(), a, a+(sizeof(a)/sizeof(a[0])));
,或_ countof()
macros,如果你有它的定义。
你可以用初始化列表来完成它:
std::vector<unsigned int> array; // First argument is an iterator to the element BEFORE which you will insert: // In this case, you will insert before the end() iterator, which means appending value // at the end of the vector. array.insert(array.end(), { 1, 2, 3, 4, 5, 6 });
你也可以使用Boost.Assignment :
const list<int> primes = list_of(2)(3)(5)(7)(11); vector<int> v; v += 1,2,3,4,5,6,7,8,9;
使用vector :: insert(const_iterator position,initializer_list il); http://www.cplusplus.com/reference/vector/vector/insert/
#include <iostream> #include <vector> int main() { std::vector<int> vec; vec.insert(vec.end(),{1,2,3,4}); return 0; }