【问题标题】:C++ output 2D VectorC++ 输出二维向量
【发布时间】:2018-03-22 14:43:52
【问题描述】:

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

这些中的任何一个都可以通过小修复工作还是根本不工作?

【问题讨论】:

  • 那是因为ints 没有.at 函数。您没有二维向量。
  • 只需将矢量类型更改为双精度就可以了吗?如果我还想使用 int 类型的向量怎么办?
  • 没有@rrc 它不会。请检查我的答案。

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


【解决方案1】:

关注这里:

data[i].at(j) 

当您在位置i 索引您的向量时,您会得到它的第i 个数字。那是int 类型。

然后你在int 上请求一个名为at() 的方法。这不是由基本类型 int 提供的。

如果您尝试用一维模拟二维矢量,那么您可以这样做:

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

【讨论】:

    【解决方案2】:

    我发现像 2D 数组一样完全打印 2D 矢量的内容会更容易。

    示例:

    假设我们有一个称为矩阵的二维向量,它包含 5 x 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

    但是,它需要用户输入。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多