Вывод двумерного вектора в C ++ - PullRequest
0 голосов
/ 05 июня 2018

Я следовал руководству по выводу двумерного вектора с 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 не разбивает вектор на строки, как это должно быть.Может кто-нибудь объяснить мне, что я делаю не так, или показать правильный метод вывода двумерного вектора в виде сетки?

1 Ответ

0 голосов
/ 05 июня 2018

Ваш верхний вектор 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 больше записей после инициализации.

...