在C++中输出二维向量

Joe*_*lli 2 c++ 2d-vector

我一直在关注如何使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的结果看起来并不完全符合预期; 我希望能够将矢量输出到二维网格状空间.据我所知,我的代码遵循示例,但是cout << endl;内部for循环之后并没有将向量分成像它应该的行.有人可以向我解释我做错了什么,或者向我展示将二维矢量输出到网格状图案的正确方法吗?

Moh*_*nan 5

你顶向量test只有一个入口,这是一个vectorint {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初始化后的更多条目.