C++ 如何一次将多个整数传递给一个向量?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14561941/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I pass multiple ints into a vector at once?
提问by Elliott
Currently when I have to use vector.push_back()
multiple times.
目前当我必须vector.push_back()
多次使用时。
The code I'm currently using is
我目前使用的代码是
std::vector<int> TestVector;
TestVector.push_back(2);
TestVector.push_back(5);
TestVector.push_back(8);
TestVector.push_back(11);
TestVector.push_back(14);
Is there a way to only use vector.push_back()
once and just pass multiple values into the vector?
有没有办法只使用vector.push_back()
一次并只将多个值传递给向量?
回答by billz
Try pass array to vector:
尝试将数组传递给向量:
int arr[] = {2,5,8,11,14};
std::vector<int> TestVector(arr, arr+5);
You could always call std::vector::assignto assign array to vector, call std::vector::insert to add multiple arrays.
您始终可以调用std::vector::assign将数组分配给向量,调用 std::vector::insert 添加多个数组。
If you use C++11, you can try:
如果您使用 C++11,您可以尝试:
std::vector<int> v{2,5,8,11,14};
Or
或者
std::vector<int> v = {2,5,8,11,14};
回答by sashoalm
You can also use vector::insert.
您也可以使用vector::insert。
std::vector<int> v;
int a[5] = {2, 5, 8, 11, 14};
v.insert(v.end(), a, a+5);
Edit:
编辑:
Of course, in real-world programming you should use:
当然,在实际编程中你应该使用:
v.insert(v.end(), a, a+(sizeof(a)/sizeof(a[0]))); // C++03
v.insert(v.end(), std::begin(a), std::end(a)); // C++11
回答by Kosiek
You can do it with initializer list:
你可以用初始化列表来做到这一点:
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 });
回答by Li Kui
using vector::insert (const_iterator position, initializer_list il);http://www.cplusplus.com/reference/vector/vector/insert/
使用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;
}
回答by zxxc
You can also use Boost.Assignment:
您还可以使用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;
回答by alfC
These are the three most straight forward methods:
这是三种最直接的方法:
1) Initialize from an initializer list:
1) 从初始化列表初始化:
std::vector<int> TestVector = {2,5,8,11,14};
2) Assign from an initializer list:
2)从初始化列表中分配:
std::vector<int> TestVector;
TestVector.assign( {2,5,8,11,14} ); // overwrites TestVector
3) Insert an initializer list at a given point:
3) 在给定点插入初始化列表:
std::vector<int> TestVector;
...
TestVector.insert(end(TestVector), {2,5,8,11,14} ); // preserves previous elements