Vector 2D de pares en C++ con ejemplos

¿Qué es Vector?

En C++ , un vector es similar a las arrays dinámicas con la capacidad de cambiar su tamaño automáticamente. Los elementos vectoriales se almacenan en ubicaciones de memoria contiguas para que se pueda acceder a ellos y recorrerlos mediante iteradores.

Algunas de las funciones asociadas a un vector:

  • begin() : Devuelve un iterador que apunta al primer elemento del vector. Complejidad-O(1).
  • end() : Devuelve un iterador que apunta al elemento teórico que sigue al último elemento del vector. Complejidad-O(1).
  • rbegin() : Devuelve un iterador inverso que apunta al último elemento del vector (comienzo inverso). Se mueve del último al primer elemento. Complejidad-O(1).
  • size() : Devuelve el número de elementos en el vector. Complejidad-O(1).
  • vacío() : devuelve si el vector está vacío. Complejidad-O(1).
  • push_back() : Empuja los elementos en un vector desde atrás. Complejidad-O(1).
  • pop_back() : se utiliza para hacer estallar o eliminar elementos de un vector desde atrás. Complejidad-O(1).
  • insert() : Inserta nuevos elementos antes del elemento en la posición especificada. Complejidad-O(1).

¿Qué es un vector 2D?

En C++, un vector 2D es un vector de vectores, lo que significa que cada elemento de un vector 2D es un vector en sí mismo. Es lo mismo que una array implementada con la ayuda de vectores.

Algunas de las funciones asociadas a un vector 2D:

  • size(): Devuelve el número de elementos en el vector 2D. 
  • vacío(): Devuelve si el vector 2D está vacío.
  • push_back(): empuja un vector a un vector 2D desde atrás.
  • pop_back(): se utiliza para hacer estallar o eliminar elementos de un vector 2D desde la parte posterior.

¿Qué es Par?

El encabezado de utilidad en C++ nos proporciona un contenedor de pares . Un par consta de dos elementos de datos u objetos.

  • Se hace referencia al primer elemento como ‘primero’ y al segundo elemento como ‘segundo’ y el orden es fijo (primero, segundo).
  • Par se utiliza para combinar dos valores que pueden ser de tipo diferente. Pair proporciona una forma de almacenar dos objetos heterogéneos como una sola unidad.
  • El par se puede asignar, copiar y comparar. La array de objetos asignados en un mapa o hash_map es de tipo ‘par’ por defecto en el que todos los ‘primeros’ elementos son claves únicas asociadas con sus ‘segundos’ objetos de valor.
  • Para acceder a los elementos, usamos el nombre de la variable seguido del operador de punto seguido de la palabra clave primero o segundo.

¿Cómo acceder a un Par?

Para acceder a los elementos de un par, use el operador de punto (.).

Sintaxis:

auto fistElement = miPar.primero;

auto fistElement = miPar.segundo;

Vector 2D de pares

Un vector 2D de pares o vector de vectores de pares es un vector en el que cada elemento es un vector de pares en sí mismo. 

Sintaxis:

vector<vector<par<tipo de datos1, tipo de datos2>> miContenedor

Aquí,

dataType1 y dataType2 pueden ser tipos de datos similares o diferentes.

Ejemplo 1: En el siguiente programa C++, se usa un vector de vectores de pares de tipo {int, string}.

C++

// C++ program to demonstrate the
// working of vector of vectors
// of pairs
#include <bits/stdc++.h>
using namespace std;
 
// Function to print 2D vector elements
void print(vector<vector<pair<int,
           string>>> &myContainer)
{
  // Iterating over 2D vector elements
  for(auto currentVector: myContainer)
  {
    // Each element of the 2D vector
    // is a vector itself
    vector<pair<int, string>> myVector =
           currentVector;
 
    // Iterating over the vector
    // elements
    cout << "[  ";
    for(auto pr: myVector)
    {
      // Print the element
      cout << "{";
      cout << pr.first << " , " <<
              pr.second;
      cout << "}  ";
    }
 
    cout << "]\n";
  }
}
 
// Driver code
int main()
{
  // Declaring a 2D vector of pairs
  vector<vector<pair<int,
  string>>> myContainer;
 
  // Initializing vectors of pairs
  // Pairs are of type {int, string}
  vector<pair<int, string>> vect1 =
  {{0, "GeeksforGeeks"}, {1, "GFG"},
   {2, "Computer Science"}};
  vector<pair<int, string>> vect2 =
  {{0, "C#"}, {1, "C"}, {2, "C++"}};
  vector<pair<int, string>> vect3 =
  {{0, "HTML"}, {1, "CSS"},
   {2, "Javascript"}};
  vector<pair<int, string>> vect4 =
  {{0, "R"}, {1, "Swift"},
   {2, "Python"}};
 
  // Inserting vectors 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;
}

Producción:

[ {0 , GeeksforGeeks} {1 , GFG} {2 , Informática} ]
[ {0 , C#} {1 , C} {2 , C++} ]
[ {0 , HTML} {1 , CSS} {2 , Javascript } ]
[ {0 , R} {1 , Swift} {2 , Python} ]

Ejemplo 2: En el siguiente programa C++, se usa un vector de vectores de pares de tipo {char, bool}.

C++

// C++ program to demonstrate the
// working of vector of vectors
// of pairs
#include <bits/stdc++.h>
using namespace std;
 
// Function to print 2D vector elements
void print(vector<vector<pair<char,
           bool>>> &myContainer)
{
  // Iterating over 2D vector elements
  for(auto currentVector: myContainer)
  {
    // Each element of the 2D vector is
    // a vector itself
    vector<pair<char, bool>> myVector =
           currentVector;
 
    // Iterating over the vector
    // elements
    cout << "[  ";
    for(auto pr: myVector)
    {
      // Print the element
      cout << "{";
      cout << pr.first << " , " <<
              pr.second;
      cout << "}  ";
    }
 
    cout << "]\n";
  }
}
 
// Driver code
int main()
{
  // Declaring a 2D vector of pairs
  // Pairs are of type {char, bool}
  vector<vector<pair<char, bool>>> myContainer;
 
  // Initializing vectors of pairs
  vector<pair<char, bool>> vect1 =
  {{'G', 0}, {'e', 0},
   {'e', 0}, {'k', 0}};
  vector<pair<char, bool>> vect2 =
  {{'G', 1}, {'e', 1},
   {'e', 1}, {'k', 1}};
  vector<pair<char, bool>> vect3 =
  {{'G', 0}, {'e', 0},
   {'e', 0}, {'k', 1}};
  vector<pair<char, bool>> vect4 =
  {{'G', 0}, {'e', 1},
   {'e', 0}, {'k', 1}};
 
  // Inserting vectors in the 2D vector
  myContainer.push_back(vect1);
  myContainer.push_back(vect2);
  myContainer.push_back(vect3);
  myContainer.push_back(vect4);
 
  print(myContainer);
 
  return 0;
}

Producción:

[ {G , 0} {e , 0} {e , 0} {k , 0} ]
[ {G , 1} {e , 1} {e , 1} {k , 1} ]
[ {G , 0} {e , 0} {e , 0} {k , 1} ]
[ {G , 0} {e , 1} {e , 0} {k , 1} ]

Complejidad temporal: O(N*M) donde N es el tamaño del vector y M es el tamaño del par.

Espacio Auxiliar: O(M)

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *