[英]C++: vector <pair<vector<int>,int> >
這就是我的目標...
vector < pair<vector<int>,int> > var_name (x, pair <vector<int>(y),int>);
其中 x 是向量 var_name 的大小,y 是對內向量的大小。
上面的語句不起作用,因為 pair 模板只允許常量。 我怎樣才能讓我的向量分別設置為 x 和 y?
vector<pair<vector<int>,int> > var_name(x, make_pair(vector<int>(y), 0));
將其簡化為:
pair<vector<int>,int> value(vector<int>(y), 0);
vector<pair<vector<int>,int> > var_name(x, value);
如果您喜歡自己的語法,那么您應該這樣做:
vector<pair<vector<int>,int> > var_name(x, std::make_pair(vector<int>(y), 0));
您可以使用<utility>
中的make_pair
來構造您希望用來初始化vector
的對。 例如:
vector< pair<vector<int>,int> > var_name(x, make_pair(vector<int>(y), 42))
或直接調用pair<vector<int>,int>
構造函數(看起來你正在嘗試):
vector< pair<vector<int>,int> > var_name(x, pair<vector<int>,int>(vector<int>(y), 0))
pair<vector<int>,int>
是類型的名稱。 對於初始化,您需要一個值。
您可以通過調用該類型的構造函數來獲得一個值(與在語句的頂層您為var_name
所做的方式相同)。 由於這是在表達式中內聯創建值,而不是初始化變量,因此沒有變量名稱,我們只需編寫類似pair<vector<int>,int>(...)
的內容。 ...
是構造函數的 arguments(將(y)
放在尖括號內的任何位置都是不合邏輯的)。 在我們的例子中,我們希望第一個值是長度為 y 的向量,而第二個值是...... 0,我假設。
所以我們得到pair<vector<int>,int>(vector<int>(y), 0)
。 這相當笨拙,這就是標准庫提供模板 function std::make_pair
的原因。 通過使用免費的 function(可以使用模板參數進行推斷)來調用構造函數,它繞過了模板 arguments 無法為構造函數推斷的事實。
因此,上面的內容縮短為make_pair(vector<int>(y), 0)
,當代入該行的 rest 時,給出了 Benjamin Lindley 的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.