可能重复:
C++: Easiest way to initialize an STL vector with hardcoded elements
How to initialize a vector in c++
我想知道是否有办法制作带有已宣布元素的矢量..
而不是必须这样做:
vector< int > v;
v.push_back(3);
v.push_back(5);
v.push_back(1);
等,其中v = {3,5,1},
我想制作一个已包含以下元素的向量:
vector< int > v = {3,5,1};
因为在向量中插入每个数字是很多工作。这有什么捷径吗?
答案 0 :(得分:11)
C ++ 11完全支持您建议的语法:
vector< int > v = {3,5,1};
此功能称为uniform initialization。
在该语言的早期版本中,没有任何“好”的方法可以做到这一点。
答案 1 :(得分:3)
您可以使用boost::assign
std::vector<int> v = boost::assign::list_of(3)(5)(1);
答案 2 :(得分:2)
你可以用C ++ 11
std::vector< int > v = {3,5,1};
正如Greg Hewgill建议的那样,或者在C ++ 98中
static const int v_[] = {3,5,1};
std::vector<int> vec (v_, v_ + sizeof(v_) / sizeof(v_[0]) );
答案 3 :(得分:1)
是的,你可以在C ++ 11中做到
std :: vector v {1,2,3,4};
您可以通过C ++ 98
中的构造函数创建多个具有相同值的元素std::vector<int> v (5, 6); //6 6 6 6 6
如果你没有C ++ 11,你可以创建某种回推对象
#include <vector>
struct pb{
std::vector<int>& v_;
pb(std::vector<int>& v)
: v_(v){};
pb& operator+(int i) {
v_.push_back(i);
return *this;
}
};
int main() {
std::vector<int> d;
pb(d)+4+3;
}
答案 4 :(得分:0)
C ++ 11具有这样的功能,大多数编译器都支持它。
在gcc中启用:
g ++ -std = gnu ++ 0x
VS2010支持开箱即用