我一直在学习如何使用C ++输出二维向量的教程,并得出以下代码:
private static final Object LOCK = new Object();
private static List<UserDto> userCache;
public static List<UserDto> getUserCache() {
synchronized (LOCK) {
if (userCache == null) {
try {
userCache = initUserList();
} catch (IOException e) {
return Collections.emptyList();
}
}
return userCache;
}
}
产生以下输出:
#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;
}
}
正如您所看到的,我的结果看起来并不完全符合预期;我希望能够将矢量输出到二维网格状空间。据我所知,我的代码遵循示例,但内部for循环之后的1 2 3 4 5 6 7 8 9
并未将向量分解为应该如此的行。有人可以向我解释我做错了什么,或者向我展示将二维矢量输出为网格状模式的正确方法吗?
答案 0 :(得分:5)
您的顶部向量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
个更多条目。