2017-10-11 148 views
2

我寫了這個double forloop,並期望看到這是否會輸出此向量中的每個值,但它不起作用,對於其中的數據[i] .at(j)不太明白C++輸出2D矢量

vector<int> data; //it filled with some integers with x rows and y columns 

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) cout << data[i].at(j) << ' '; 
     cout << endl; 
} 

我也試過這種方法,它不工作,要麼data.at(我)。在(我)是

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) cout << data.at(i).at(j) << ' '; 
    cout << endl; 
} 

會那樣做的這些錯誤與一個小的修復工作?或者他們根本不工作?

+1

這是因爲'int's沒有'.at'功能。你沒有2D矢量。 –

+0

只需將矢量類型更改爲雙精度就可以工作?以及如果我想要使用int類型的向量呢? – rrc

+0

沒有@rrc它不會。請檢查我的答案。 – gsamaras

回答

2

這裏重點:

data[i].at(j) 

當你索引你在i位置矢量,你得到它的i個號碼。這是類型int

然後你需要一個名爲at()的方法int。這不是由原始類型int提供的。

如果你試圖效仿與一維二維向量,那麼你可以這樣做:

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) 
     cout << data[i + j * col] << ' '; 
    cout << endl; 
}