2014-05-18 90 views
3

我有一個包含向量的結構向量,我不知道如何初始化結構中的字段。 我有以下代碼:初始化結構向量中的向量

struct member { 
    vector<pair<int, int> > rival_result; 
    int matches; 
} 
vector<member> ranking(n); 

我想設置該結構到另一向量的大小內的矢量的大小,並在所有的字段具有0(比賽和一對矢量的整數)的。 N可以是一個非常大的數字,所以它不能手動完成。 謝謝。

+0

C++ 11或更高版本允許嗎?另外,初始化後大小是否會改變/是否必須在運行時設置? – Deduplicator

+0

不能使用c + + 11,並且初始化後大小不能改變,對於更多信息,這個代碼是一個類的私有成員,並且我想將它初始化爲創建者函數0,它是: 排名: :Ranking(int n); – flapedriza

回答

3

寫出member第一個構造函數,將您的向量的大小:

struct member { 
    explicit member (int n) : rival_result(n), matches(0) { } 
    vector<pair<int, int> > rival_result; 
    int matches; 
}; 

現在創建您的載體:

vector<member> ranking(n, member(n)); 
+0

謝謝,我不知道顯式說明符,明天我會問我的老師,如果我可以在我的代碼中使用它,它們對我們可以不能使用的廣告非常有限制。 – flapedriza

+0

@flapedriza這裏使用'explicit'是可選的。它阻止編譯器將構造函數視爲定義從「int」到「member」的隱式轉換,這可能是錯誤的根源。 [這個問題](http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean)有詳細信息。 –