我希望能够使用如下变量初始化矢量:
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。谢谢!
答案 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++98
和C++11
都支持此功能。