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]) );