Вектор векторов в C ++ STL с примерами
Предварительное условие: векторы в C ++ STL
Векторы известны как динамические массивы с возможностью автоматического изменения размера при вставке или удалении элемента, а их хранение автоматически обрабатывается контейнером.
Вектор векторов - это двумерный вектор с переменным количеством строк, где каждая строка является вектором. Каждый индекс вектора хранит вектор, по которому можно пройти и получить к нему доступ с помощью итераторов. Он похож на массив векторов, но с динамическими свойствами.
Синтаксис:
vector <vector <data_type>> vec;
Пример:
vector<vector<int>> vec{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9, 4 } }; where vec is the vector of vectors with different number of elements in different rows
Вставка векторов в вектор
Элементы могут быть вставлены в вектор с помощью функции push_back () C ++ STL.
Пример ниже демонстрирует операцию вставки в вектор векторов. Код создает двумерный вектор с помощью функции push_back (), а затем отображает матрицу.
Синтаксис:
vector_name.push_back (значение) где значение относится к элементу быть добавленным в конец вектора
Пример 1:
v2 = {1, 2, 3} v1.push_back (v2);
Эта функция помещает вектор v2 в вектор векторов v1. Следовательно, v1 становится {{1, 2, 3}}.
Пример 2:
v2 = {4, 5, 6} v1.push_back(v2);
Эта функция вставляет вектор v2 в существующий вектор векторов v1, и v1 становится v1 = {{1, 2, 3}, {4, 5, 6}}
Ниже приведен пример, демонстрирующий вставку в вектор векторов.
// C++ program to demonstrate insertion // into a vector of vectors #include <iostream> #include <vector> using namespace std; // Defining the rows and columns of // vector of vectors #define ROW 4 #define COL 5 int main() { // Initializing the vector of vectors vector<vector< int > > vec; // Elements to insert in column int num = 10; // Inserting elements into vector for ( int i = 0; i < ROW; i++) { // Vector to store column elements vector< int > v1; for ( int j = 0; j < COL; j++) { v1.push_back(num); num += 5; } // Pushing back above 1D vector // to create the 2D vector vec.push_back(v1); } // Displaying the 2D vector for ( int i = 0; i < vec.size(); i++) { for ( int j = 0; j < vec[i].size(); j++) cout << vec[i][j] << " " ; cout << endl; } return 0; } |
10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105
Удаление или удаление в векторе векторов
Элементы могут быть удалены из вектора векторов с помощью функции pop_back () C ++ STL.
Пример ниже демонстрирует операцию удаления в векторе векторов. Код удаляет элементы из 2D-вектора с помощью функции pop_back (), а затем отображает матрицу.
Синтаксис:
имя_вектора [row_position] .pop_back ()
Пример 1. Пусть вектор векторов будет вектором v = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
v [2] .pop_back ()
Эта функция удаляет элемент 9 из последней строки вектора. Следовательно, v становится {{1, 2, 3}, {4, 5, 6}, {7, 8}}.
Пример 2:
v [1] .pop_back ()
Эта функция удаляет элемент 6 из последней второй вектор-строки. Следовательно, v становится {{1, 2, 3}, {4, 5}, {7, 8}}.
Ниже приведен пример, демонстрирующий удаление из вектора векторов.
// C++ program to demonstrate removal // from a vector of vectors #include <iostream> #include <vector> using namespace std; // Driver Method int main() { // Initializing 2D vector "vect" with // sample values vector<vector< int > > vec{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; // Removing elements from the // last row of the vector vec[2].pop_back(); vec[1].pop_back(); // Displaying the 2D vector for ( int i = 0; i < 3; i++) { for ( auto it = vec[i].begin(); it != vec[i].end(); it++) cout << *it << " " ; cout << endl; } return 0; } |
1 2 3 4 5 7 8
Обход вектора векторов
Вектор векторов можно обойти с помощью итераторов в C ++. Следующий код демонстрирует обход 2D-вектора.
Синтаксис:
для i в [0, n) { for (итератор it = v [i] .begin (); это! = v [я] .end (); это ++) { // Операции, которые необходимо сделать // Например, чтобы напечатать печать (* это) } }
Ниже приведен пример, демонстрирующий обход вектора векторов.
// C++ code to demonstrate traversal // of a 2D vector #include <iostream> #include <vector> using namespace std; // Driver Method int main() { // Initializing 2D vector "vect" with // sample values vector<vector< int > > vec{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; // Displaying the 2D vector for ( int i = 0; i < 3; i++) { for ( auto it = vec[i].begin(); it != vec[i].end(); it++) cout << *it << " " ; cout << endl; } return 0; } |
1 2 3 4 5 6 7 8 9