2014-10-09 130 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