我编写了两个for
循环,并希望看看它们是否会在名为data
的向量中输出每个值,但它不起作用。我不太了解与data[i].at(j)
相关的错误。
vector<int> data; //it is 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(i).at(j)
有错误。
for ( int i = 0; i < data.size(); ++i ) {
for ( int j = 0; j < col; ++j ) {
cout << data.at(i).at(j) << ' ';
cout << endl;
}
其中任何一个都可以使用一个小修复工具,或者根本不工作吗?
答案 0 :(得分:4)
关注点:
data[i].at(j)
在位置i
对索引编制索引时,会得到i
个数字。那是int
类型。
然后你在at()
上要求一个名为int
的方法。原始类型int
不提供此功能。
如果您尝试使用1D模拟2D矢量,则可以执行以下操作:
for (int i = 0; i < data.size; ++i)
{
for (int j = 0; j < col; ++j)
cout << data[i + j * col] << ' ';
cout << endl;
}
答案 1 :(得分:0)
通过像2D数组一样打印2D矢量完全的内容,我发现它更容易。
让我们说我们有一个名为矩阵的2D矢量,它包含5乘5的值:
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5
我们需要输出矩阵,所以我们将使用:
// The matrix:
vector <vector <int> > matrix ;
// The Row container:
vector <int> row
// The creation of the row:
for (int i = 1 ; i <= 5 ; i = i + 1) {
row.push_back (i) ;
}
// The creation of the matrix.
for (int j = 1 ; j <= 5 ; j = j + 1) {
matrix.push_back (row) ;
}
// Print the matrix
for (int k = 0 ; k < matrix.size () ; k = k + 1) {
for (int l = 0 ; l < matrix [k].size () ; l = l + 1) {
cout << matrix [k] [l] << ' ' ;
}
cout << endl ;
}
如果你有不同大小的行,上面的例子也会有效:
1,2,3,4,
1,2,
1,2,3,
1,2,3,4,5
1
然而,它将需要用户输入。