用变量初始化向量,C ++

时间:2014-10-09 05:03:46

标签: c++ vector initialization

我希望能够使用如下变量初始化矢量:

    int min,max;
    scanf("%d %d", &min, &max); 
    vector<int> day(min, max, max);

但是当我尝试时,我收到一条错误消息:

IntelliSense:没有构造函数的实例&#34; std :: vector&lt; _Ty,_Alloc&gt; :: vector [with _Ty = int,_Alloc = std :: allocator]&#34;匹配参数列表             参数类型是:(int,int,int)

有没有办法解决这个问题?如果重要的话,我正在使用Visual Studio 2013。谢谢!

2 个答案:

答案 0 :(得分:5)

您需要列表初始化来指定向量的内容,假设您的编译器支持它:

vector<int> day{min, max, max};

在C ++ 11之前,它更加乏味:

vector<int> day;
day.push_back(min);
day.push_back(max);
day.push_back(max);

答案 1 :(得分:1)

你也可以这样做:

int min,max;
scanf("%d %d", &min, &max);
int temp[] = {min, max, max};
vector<int> day(temp, temp + sizeof(temp) / sizeof(int));

这将花费你一点额外的记忆。 C++98C++11都支持此功能。