我一直在关注如何使用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循环之后并没有将向量分成像它应该的行.有人可以向我解释我做错了什么,或者向我展示将二维矢量输出到网格状图案的正确方法吗?
你顶向量test只有一个入口,这是一个vector的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初始化后的更多条目.