C++: How to make a vector that already contains elements
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
C++: Easiest way to initialize an STL vector with hardcoded elements
How to initialize a vector in c++
我想知道是否有一种方法可以用已公布的元素制作一个向量。
而不是必须这样做:
1 2 3 4 | vector< int > v; v.push_back(3); v.push_back(5); v.push_back(1); |
等,其中v=3,5,1,
我想制作一个已经包含如下元素的向量:
1 | vector< int > v = {3,5,1}; |
因为在向量中插入每个数字需要很多工作。有这个的捷径吗?
C++ 11完全支持你所建议的语法:
1 | vector< int > v = {3,5,1}; |
此功能称为统一初始化。
在该语言的早期版本中,没有任何"好"的方法可以做到这一点。
您可以使用
1 | std::vector<int> v = boost::assign::list_of(3)(5)(1); |
你可以在C++ 11中做
1 | std::vector< int > v = {3,5,1}; |
正如Greg Hewgill在C++ 98中提出的那样
1 2 | static const int v_[] = {3,5,1}; std::vector<int> vec (v_, v_ + sizeof(v_) / sizeof(v_[0]) ); |
恭维:https://stackoverflow.com/a/223627/1276982
是的,在C++ 11中你可以做
标准::矢量v 1,2,3,4
可以通过C++ 98中的构造函数创建相同值的多个元素。
1 | std::vector<int> v (5, 6); //6 6 6 6 6 |
如果没有C++ 11,就可以创建某种推后置对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #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; } |
C++ 11具有这样的特性,大多数编译器支持它。
在GCC中启用:
G++-标准=GNU++0X
我认为,VS2010是开箱即用的。