Двовимірний вектор — це a вектор вектора. Подібно до 2D-масивів, ми можемо оголошувати та призначати значення 2D-вектору!
Припускаючи, що ви знайомі з нормальним вектором у C++, за допомогою прикладу ми продемонструємо, чим двовимірний вектор відрізняється від нормального вектора нижче:
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Перший елемент із 2 значеннями в ньому. */ {1, 2}, /* Другий елемент із 3 значеннями в ньому. */ {4, 5, 6}, /* Третій елемент із 4 значеннями. */ {7, 8, 9, 10} }; /* Тепер ми друкуємо вектор, який щойно визначили за допомогою простого вкладеного циклу for. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
У двовимірному векторі кожен елемент є вектором.
Часова складність: О(1)
Допоміжний простір: О(1)
C++
/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(рядок); /* У рядку 21 ми створили 2D-вектор і призначили йому ємність 'ряду' (у цьому випадку 5) одиниць. */ /* Тепер ми приступимо до створення структури нашого 2D-вектора, призначаючи значення рядків і стовпців за допомогою вкладеного циклу for. */ for(int i = 0; i { /* Оголошення розміру стовпця. */ int col = column[i]; /* У 43-му рядку оголошуємо i-й рядок до розміру стовпця. Ми створюємо нормальний вектор ємності 'col', який у кожній ітерації циклу for визначатиме значення всередині кожного рядка */ vec[i] = vector |
>
>Вихід
1 2 3 4 5 6 7 8 9>
Часова складність: O(N*N)
Допоміжний простір: O(N*N)
Інший підхід до доступу до векторних елементів:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Вихід
1 2 3 4 5 6 7 8 9>
Часова складність: O(N*N)
Допоміжний простір: O(N*N)
Подібно до зубчастих масивів Java, кожен елемент 2D-вектора може містити різну кількість значень.
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Перший елемент із 2 значеннями в ньому. */ {1, 2}, /* Другий елемент із 3 значеннями в ньому. */ {4, 5, 6}, /* Третій елемент із 4 значеннями. */ {7, 8, 9, 10} }; /* Тепер ми друкуємо вектор, який щойно визначили за допомогою простого вкладеного циклу for. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Вихід
1 2 4 5 6 7 8 9 10>
Проблема вправи: Визначте 2D-вектор із різними розмірами стовпців.
приклади:
Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>
Двовимірні вектори часто розглядаються як матриця з рядками та стовпцями всередині неї. Під капотом вони фактично є елементами 2D-вектора.
Спочатку ми оголошуємо цілочисельну змінну з іменем row, а потім масив з іменем column, який буде містити значення розміру кожного рядка.
Після цього ми переходимо до ініціалізації пам'яті кожного рядка розміром стовпця.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , вектор |
конвертувати рядок у json java
>
>Вихід
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Інший підхід
Припустімо, ми хочемо ініціалізувати двовимірний вектор п ряди і м стовпці зі значенням 0.
C++
>
>Вихід
0 0 0 0 0 0 0 0 0 0 0 0>
Часова складність: O(N*M)
Допоміжний простір: O(N*M)
Ще один підхід:
Припустімо, ми хочемо створити двовимірний вектор п ряди і м стовпці та вхідні значення.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , вектор |
>
>Вихід
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Часова складність: O(N*M)
Допоміжний простір: O(N*M)
Ми сподіваємося, що ви залишите цю статтю з кращим розумінням двовимірних векторів і тепер достатньо впевнені, щоб застосовувати їх самостійно.