2014-10-09 129 views
1

我希望能够初始化使用变量这样的载体:初始化向量与变量,C++

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

但是当我尝试,我得到一个错误信息说:

智能感知:没有实例构造函数 “的std ::矢量< _Ty,_Alloc>矢量[与_Ty = INT,_Alloc =标准::分配器] ::” 相匹配的参数列表 参数类型是:(INT,INT,INT)

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

+1

如果C++ 11可用,您可以使用列表初始化像它'vector day {min,max,max};' – Kastaneda 2014-10-09 05:07:58

回答

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

现在我想到了,我很惊讶他们没有使用'operator <<'为... – Blindy 2014-10-09 05:09:02

+0

在C++ 11之前,可以使用boost :: assign:'vector day = boost :: assign :: list_of(min)(max)(max);' – cdhowie 2014-10-09 05:58:21

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都支持这一点。

+1

我宁愿'vector day(begin(temp),end(temp));'相反 - 它比内联指针算术更清洁一点。 – cdhowie 2014-10-09 05:59:38

+0

它是你的选择.... – 2014-10-09 06:00:49