Jak zbadać rozmiar dwuwymiarowego kontenera (tablicy)?

0

Mam tablicę dwuwymiarową, której rozmiar znam:

std::array<std::array<int, 3>, 3> tab = {{{5, 8, 2}, {8, 3, 1}, {5, 3, 9}}};

i wtedy mogę przejść przez każdy jej element w ten sposób:

void draw()
{
    for (int row = 0; row < 3; row++)
    {
        for (int col = 0; col < 3; col++)
            std::cout << tab[row][col];
        std::cout << std::endl;
    }
}

Co gdybym miał wektor pełniący te samą funkcje z tym że nie znam ilości kolumn i wierszy?

std::vector< std::vector< int > > tab;

Jak mogę wtedy wyświetlić każdy element?

2

Zakładam, że tab i chessboard mają różne nazwy przez pomyłkę.

for(auto const& row : tab) {
    for(auto const& elem : row) {
        cout << elem << " ";
    }
    cout << '\n';
}

Ewentualnie możesz użyć metody size() kontenerów standardowych i użyć staroświeckiej pętli. A od C++17 dostępna będzie std::size(Cont const&), działająca zarówno dla tablic jak i kontenerów zawierających funkcję size().

Przy okazji, zachęcam do lektury: https://dsp.krzaq.cc/post/98/prosty-widok-na-macierz-2d-w-cpp/ i https://dsp.krzaq.cc/post/448/n-wymiarowy-widok-na-macierz-w-cxx/

1 użytkowników online, w tym zalogowanych: 0, gości: 1