【问题标题】:Outputting a two-dimensional vector in C++在 C++ 中输出二维向量
【发布时间】:2023-03-04 23:36:01
【问题描述】:

我一直在关注如何使用 C++ 输出二维向量的教程,并得出以下代码:

#include <iostream>
#include <vector>
using namespace std;

int main()
{

    vector < vector < int > > test { { 1, 2, 3,
                                       4, 5, 6,
                                       7, 8, 9  } };

    for( unsigned int i = 0; i < test.size(); i++ )
    {
        for( unsigned int j = 0; j < test[i].size(); j++ )
        {
            cout << test[i][j] << " ";
        }
        cout << endl;
    }
}

产生以下输出:

1 2 3 4 5 6 7 8 9

如您所见,我的结果与预期的不完全一样;我希望能够将向量输出到二维网格状空间中。据我所知,我的代码遵循示例,但内部 for 循环之后的 cout &lt;&lt; endl; 并未像应有的那样将向量分成行。有人可以向我解释我做错了什么,或者告诉我将二维向量输出为网格状图案的正确方法吗?

【问题讨论】:

  • 您的向量初始化中有错字。你使用了{{1,2,...,9}} 而不是{{1,2,3},{4,5,6},{7,8,9}}
  • 您的向量是 1x9,要使其成为 3x3,请使用 {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
  • 原来如此,谢谢你指出我自己的愚蠢
  • 调试器很好。检查test.size()test[0].size()

标签: c++ 2d-vector


【解决方案1】:

你的顶部向量test只有一个条目,即int{1,2,3,4,5,6,7,8,9}vector,所以它的大小实际上是1。 因此,外部的for loop 只会迭代一次,你会得到一个平坦的输出。

为了获得您所期望的,您需要使用多个条目初始化您的顶部向量——就像评论中的内容:vector&lt;vector&lt;int&gt;&gt; test {{1, 2,3},{4,5,6}, {7, 8, 9}};push 初始化后的更多条目。

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2020-10-13
    • 2011-05-08
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2013-11-04
    • 2017-12-26
    相关资源
    最近更新 更多