C++ C++;:如何生成已包含元素的向量
可能重复:C++ C++;:如何生成已包含元素的向量,c++,vector,C++,Vector,可能重复: 我想知道是否有一种方法可以用已公布的元素生成向量 而不是必须这样做: vector< int > v; v.push_back(3); v.push_back(5); v.push_back(1); 因为在向量中插入每个数字需要很多工作。有快捷方式吗?C++11完全支持您建议的语法: vector< int > v = {3,5,1}; vectorv={3,5,1}; 此功能称为 在以前版本的语言中没有任何“好”的方法来实现这一点。
我想知道是否有一种方法可以用已公布的元素生成向量 而不是必须这样做:
vector< int > v;
v.push_back(3);
v.push_back(5);
v.push_back(1);
因为在向量中插入每个数字需要很多工作。有快捷方式吗?C++11完全支持您建议的语法:
vector< int > v = {3,5,1};
vectorv={3,5,1};
此功能称为
在以前版本的语言中没有任何“好”的方法来实现这一点。C++11有这样一个功能,大多数编译器都支持它 要在gcc中启用:
g++ -std=gnu++0x
VS2010支持开箱即用,我认为在C++11中可以
std::vector<int> v { 1,2,3,4 };
std::向量v{1,2,3,4};
您可以通过C++98中的构造函数创建具有相同值的多个元素
std::vector<int> v (5, 6); //6 6 6 6 6
标准向量v(5,6)//6 6 6 6 6
如果没有C++11,可以创建某种类型的push-back对象
#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;
}
#包括
结构pb{
std::vector&v;
pb(标准::向量和向量)
:v_uv(v){};
pb和操作员+(int i){
v.推回(i);
归还*这个;
}
};
int main(){
std::载体d;
pb(d)+4+3;
}
您可以使用
std::vector v=boost::assign::list_of(3)(5)(1);
您可以在C++11中执行
std::vector< int > v = {3,5,1};
std::vectorv={3,5,1};
正如Greg Hewgill Suggested或C++98中的
static const int v_[] = {3,5,1};
std::vector<int> vec (v_, v_ + sizeof(v_) / sizeof(v_[0]) );
static const int v_[]={3,5,1};
std::向量向量向量(v_u,v_u+sizeof(v_u)/sizeof(v_u[0]);
恭维:根据本文,还有一些替代方法可以使用copyctor和boost/assign模板库:下面是另一个:
std::vector< int > v = {3,5,1};
static const int v_[] = {3,5,1};
std::vector<int> vec (v_, v_ + sizeof(v_) / sizeof(v_[0]) );