我正在使用向量,我正在初始化它们:
vector<int> values;
values.push_back(1);
values.push_back(2);
values.push_back(8);
values.push_back(12);
values.push_back(32);
values.push_back(43);
values.push_back(23);
values.push_back(234);
values.push_back(7);
values.push_back(1);
有没有办法以类似数组的方式推送这些元素?像这样:
int numbers[2] = {1, 2};
矢量方法占用太多行,IMO!
答案 0 :(得分:9)
在C ++ 11中,您可以对任何容器使用大括号初始化。
std::vector <int> v = {1, 2, 8, 12, 32 ...};
在C ++ 03中你可以这样做
const int arr[] = {1, 2, 8, 12, 32 ... };
const int size = sizeof arr / sizeof arr[0];
std::vector<int> v(arr, arr + size);
或使用boost assign。
#include <boost/assign.hpp>
using namespace boost::assign;
///...
{
std::vector<int> v;
v += 1, 2, 8, 12, 32;
}
答案 1 :(得分:4)
如果您亲自使用C ++ 11编译器,确实有一种方法可以做到这一点:
std::vector<int> values = {1, 2, 3, 4, 5};
这称为初始化列表。 std::vector
有一个constructor that takes an initializer list(见声明7)来初始化其元素。
答案 2 :(得分:3)
在C ++ 11中,您可以像使用数组一样进行。 std::vector
有一个带std::initializer_list<T>
的构造函数,允许它从列表中初始化自己。
在C ++ 03中,您可以使用临时数组:
int tempValues[] = {1,2,8,12,32,43,23,234,7,1};
std::vector<int> values(tempValues, tempValues + sizeof tempValues / sizeof tempValues[0]);