2017-10-11 151 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; 
}