2

我一直在关注如何使用 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

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

4

1 回答 1

5

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

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

于 2018-06-04T23:10:45.203 回答