C ++输出2D矢量

时间:2017-10-11 03:49:50

标签: c++ loops vector output 2d-vector

我编写了两个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;
}

其中任何一个都可以使用一个小修复工具,或者根本不工作吗?

2 个答案:

答案 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

  
     

然而,它将需要用户输入。