2D-вектор кортежей в C++ с примерами
Что такое Вектор?
В C++ вектор подобен динамическим массивам с возможностью автоматического изменения размера. Элементы вектора хранятся в смежных ячейках памяти, чтобы к ним можно было обращаться и перемещаться с помощью итераторов.
Функции, связанные с вектором:
- begin() : возвращает итератор, указывающий на первый элемент вектора.
- end() : возвращает итератор, указывающий на теоретический элемент, который следует за последним элементом в векторе.
- rbegin() : возвращает обратный итератор, указывающий на последний элемент вектора (обратное начало). Он перемещается от последнего к первому элементу.
- size() : возвращает количество элементов в векторе.
- empty() : возвращает, является ли вектор пустым.
- push_back() : вставляет элементы в вектор сзади.
- pop_back() : используется для извлечения или удаления элементов из вектора сзади.
- insert() : он вставляет новые элементы перед элементом в указанной позиции.
Что такое двумерный вектор?
В C++ двумерный вектор — это вектор векторов, что означает, что каждый элемент двумерного вектора сам является вектором. Это то же самое, что матрица, реализованная с помощью векторов.
Функции, связанные с 2D-вектором:
- size(): возвращает количество элементов в 2D-векторе.
- empty(): возвращает, является ли двумерный вектор пустым.
- push_back() : вставляет вектор в 2D-вектор сзади.
- pop_back() : используется для выделения или удаления элементов из 2D-вектора сзади.
Что такое кортеж?
Кортеж в C++ — это объект, который используется для группировки элементов. В кортеже элементы могут иметь один и тот же тип данных или разные типы данных. Элементы кортежей инициализируются в том порядке, в котором они будут доступны.
Функции, связанные с кортежем:
1. make_tuple() : make_tuple() используется для присвоения кортежу значений. Передаваемые значения должны соответствовать значениям, объявленным в кортеже.
2. get() : get() используется для доступа к значениям кортежа и их изменения, он принимает индекс и имя кортежа в качестве аргументов для доступа к определенному элементу кортежа.
Как получить доступ к кортежу?
Для доступа к элементам кортежа используйте функцию get<>().
Синтаксис:
auto fistElement = get<0>(myTuple);
auto secondElement = get<1>(myTuple);
auto thirdElement = get<2>(myTuple);
В этой статье основное внимание уделяется тому, как создать двумерный вектор кортежей в C++.
2D вектор кортежей
Двумерный вектор кортежей или вектор векторов кортежей — это вектор, в котором каждый элемент сам является вектором кортежей. Хотя для простоты кортеж может содержать любое количество элементов, рассматривается кортеж из трех элементов.
Синтаксис:
vector<vector<tuple<dataType1, dataType2, dataType3>> myContainer
Here,
dataType1, dataType2, dataType3 can be similar or dissimilar data types.
Пример 1: Ниже приведена программа на C++ для реализации двумерного вектора кортежей.
C++
// C++ program to demonstrate the // working of vector of vectors // of tuples #include <bits/stdc++.h> using namespace std; // Function to print 2D vector elements void print(vector<vector<tuple< int , int , int > > >& myContainer) { // Iterating over 2D vector elements for ( auto currentVector : myContainer) { // Each element of the 2D vector // is a vector itself vector<tuple< int , int , int > > myVector = currentVector; // Iterating over the vector elements cout << "[ " ; for ( auto currentTuple : myVector) { // Print the element cout << "{" ; cout << get<0>(currentTuple) << ", " << get<1>(currentTuple) << ", " << get<2>(currentTuple); cout << "} " ; } cout << "]
" ; } } // Driver code int main() { // Declaring a 2D vector of tuples vector<vector<tuple< int , int , int > > > myContainer; // Initializing vectors of tuples // tuples are of type {int, int, int} vector<tuple< int , int , int > > vect1 = { { 1, 1, 2 }, { 2, 2, 4 }, { 3, 3, 6 }, { 4, 4, 8 } }; vector<tuple< int , int , int > > vect2 = { { 1, 2, 3 }, { 1, 3, 4 }, { 1, 4, 5 }, { 1, 5, 6 } }; vector<tuple< int , int , int > > vect3 = { { 4, 5, 2 }, { 8, 1, 9 }, { 9, 3, 1 }, { 2, 4, 8 } }; vector<tuple< int , int , int > > vect4 = { { 7, 2, 1 }, { 6, 5, 1 }, { 1, 2, 9 }, { 10, 4, 8 } }; // Inserting vector of tuples in the 2D vector myContainer.push_back(vect1); myContainer.push_back(vect2); myContainer.push_back(vect3); myContainer.push_back(vect4); // Calling print function print(myContainer); return 0; } |
Пример 2: Ниже приведена программа на C++ для реализации двумерного вектора кортежей.
C++
// C++ program to demonstrate the // working of vector of vectors of tuples #include <bits/stdc++.h> using namespace std; // Function to print 2D vector elements void print(vector<vector<tuple<string, string, string> > >& myContainer) { // Iterating over 2D vector elements for ( auto currentVector : myContainer) { // Each element of the 2D vector // is a vector itself vector<tuple<string, string, string> > myVector = currentVector; // Iterating over the vector // elements cout << "[ " ; for ( auto currentTuple : myVector) { // Print string the element cout << "{" ; cout << get<0>(currentTuple) << ", " << get<1>(currentTuple) << ", " << get<2>(currentTuple); cout << "} " ; } cout << "]
" ; } } // Driver code int main() { // Declaring a 2D vector of tuples vector<vector<tuple<string, string, string> > > myContainer; // Initializing vectors of tuples // tuples are of type {string, string, string} vector<tuple<string, string, string> > vect1 = { { "Geeks" , "for" , "Geeks" }, { "Swift" , "Python" , "Java" }, { "Int" , "Float" , "Double" } }; vector<tuple<string, string, string> > vect2 = { { "C++" , "C" , "C#" }, { "R" , "HTML" , "CSS" }, { "Javascript" , "PHP" , "Django" } }; vector<tuple<string, string, string> > vect3 = { { "Bhuwanesh" , "Harshit" , "DS" }, { "Piyush" , "Jai" , "Naveen" }, { "Anil" , "Rahul" , "keshav" } }; vector<tuple<string, string, string> > vect4 = { { "Sweta" , "Tanu" , "Kavita" }, { "Nawal" , "Bhargav" , "Jitesh" }, { "Daya" , "Mohan" , "Bhuwanesh" } }; // Inserting vector of tuples in the // 2D vector myContainer.push_back(vect1); myContainer.push_back(vect2); myContainer.push_back(vect3); myContainer.push_back(vect4); // Calling print function print(myContainer); return 0; } |