在C ++中输出二维向量

时间:2018-06-04 23:03:38

标签: c++ 2d-vector

我一直在学习如何使用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 并未将向量分解为应该如此的行。有人可以向我解释我做错了什么,或者向我展示将二维矢量输出为网格状模式的正确方法吗?

1 个答案:

答案 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个更多条目。