2D-вектор кортежей в C++ с примерами

Опубликовано: 10 Сентября, 2022

Что такое Вектор?

В 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;
}

C++