2016-05-14 17 views
1

我有一些代碼八九不離十是這樣的:無法插入整數到多維向量

vector< vector<int> > vec; // multidimensional vector 
while (condition) 
{ 
    vec.push_back(vector<int>()); // add subvectors to vec 
    for (int i = 0; i < number; i++) 
    { 
     vec[vec.size()].push_back(i); // add integers to those subvectors (the problem) 
    } 
} 

我使用vec[vec.size()]讓我的主要載體內的最後一個元素插入一個整數進去。我不明白這是爲什麼,但我從這段代碼中得到各種錯誤。我究竟做錯了什麼?

+0

'vec [vec.size()]'=未定義行爲的配方。而且,如果填充一個向量,那麼它會更有意義,然後在while循環的下一次迭代之前將它作爲最後一個事物推入外部向量。 – WhozCraig

回答

0

大家知道在C/C++該索引是從[0,大小-1]由此的向量使用以下代碼以插入整數進入最後矢量在矢量

vec[vec.size()-1].push_back(i); 
1

更常見的方式如下做到這一點:

vector< vector<int> > vec; // multidimensional vector 
vector<int> a; 
// push back elements to a 
vec.push_back(a); 
0

由於沒有人提到它,你可以這樣做:

vec[x][y] = 5; 

這將作爲一個我的期望。

但我個人發現「Eissa N.」解決方案更好

+1

只需要評論'vec [x] [y] = 5;'需要首先在兩個維度調整矢量大小。 –

+0

如果我知道尺寸,我會用你的解決方案+'vec.reserve()' – Nick