Conjunto múltiple de vectores en C++ con ejemplos

¿Qué es Multiset?

Un conjunto múltiple en C++ es un contenedor asociativo que puede contener una cantidad de elementos en un orden específico. A diferencia de un conjunto, un conjunto múltiple puede contener varias copias del mismo elemento.

Funciones asociadas a un multiset:  

  • begin() : Devuelve un iterador al primer elemento del conjunto múltiple.
  • end() : Devuelve un iterador al elemento teórico que sigue al último elemento del conjunto múltiple.
  • size() : Devuelve el número de elementos en el conjunto múltiple.
  • max_size() : Devuelve el número máximo de elementos que puede contener el conjunto múltiple.
  • vacío() : devuelve si el conjunto múltiple está vacío.

¿Qué es Vector?

En C++, los vectores son lo mismo que las arrays dinámicas con la capacidad de cambiar su tamaño cuando sea necesario. Un vector solo puede contener elementos homogéneos. En palabras simples, un vector puede contener elementos de un tipo de datos en particular únicamente y es necesario especificar el tipo de datos para un vector en el momento de la declaración.

Funciones asociadas a un vector:

  • begin() : Devuelve un iterador que apunta al primer elemento del vector.
  • end() : Devuelve un iterador que apunta al elemento teórico que sigue al último elemento del vector.
  • rbegin() : Devuelve un iterador inverso que apunta al último elemento del vector (comienzo inverso). Se mueve del último al primer elemento.
  • rend() : Devuelve un iterador inverso que apunta al elemento teórico que precede al primer elemento del vector (considerado como extremo inverso).
  • cbegin() : Devuelve un iterador constante que apunta al primer elemento del vector.
  • cend() : Devuelve un iterador constante que apunta al elemento teórico que sigue al último elemento del vector.
  • crbegin() : Devuelve un iterador inverso constante que apunta al último elemento del vector (comienzo inverso). Se mueve del último al primer elemento.
  • crend() : Devuelve un iterador inverso constante que apunta al elemento teórico que precede al primer elemento del vector (considerado como extremo inverso).

Conjunto múltiple de vectores

Un conjunto múltiple de vectores es un conjunto múltiple en el que cada elemento es un vector en sí mismo. Dos vectores se consideran iguales si los elementos correspondientes de dos vectores son iguales. Un conjunto múltiple puede contener más de una ocurrencia del mismo vector junto con otros vectores que también están ordenados. 

Sintaxis:

multiset<vector<tipo de datos>> myMultiset;

Aquí,

dataType: un tipo de datos. Representa el tipo de valores almacenados por un vector en myMultiset.

Ejemplo 1: en el siguiente programa C++ se crea un conjunto múltiple de vectorof enteros.

C++

// C++ program to demonstrate the
// working of multiset of vectors
#include <bits/stdc++.h>
using namespace std;
 
// Function to iterate over
// vector elements
void printVector(vector<int> myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}
 
// Function to iterate over multiset
// elements
void print(multiset<vector<int>> &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    // Each element is a vector
    printVector(*it);
  }
}
 
// Driver code
int main()
{
  // Declaring a multiset of vectors
  // A vector is of integer type
  multiset<vector<int>> multisetOfVectors;
 
  // Initializing vectors
  vector<int> myVector1 {3, 6, 9, 10};
  vector<int> myVector2 {5, 10, 11, 7};
  vector<int> myVector3 {3, 6, 9, 10};
  vector<int> myVector4 {5, 10, 15};
  vector<int> myVector5 {50, 20, 30, 40};
 
  // Inserting vectors into multiset
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);
 
  // Calling print function
  print(multisetOfVectors);
 
  return 0;
}

Producción:

[ 3 6 9 10 ]
[ 3 6 9 10 ]
[ 5 10 11 7 ]
[ 5 10 15 ]
[ 50 20 30 40 ]

Explicación:

En la salida anterior, «myVector1» y «myVector3» son lo mismo. Es por eso que se pueden ver dos copias del mismo vector en la salida.

Ejemplo 2: en el siguiente programa C++ se crea un conjunto múltiple de vectores de strings.

C++

// C++ program to demonstrate the
// working of multiset of vectors
#include <bits/stdc++.h>
using namespace std;
 
// Function to iterate over vector elements
void printVector(vector<string> myVector)
{
  cout << "[ ";
  for(auto element : myVector)
    cout << element << ' ';
  cout << "]\n";
}
 
// Function to iterate over multiset
// elements
void print(multiset<vector<string>>
           &multisetOfVectors)
{
  for (auto it = multisetOfVectors.begin();
       it != multisetOfVectors.end();
       it++)
  {
    printVector(*it);
  }
}
 
// Driver code
int main()
{
  // Declaring a multiset of vectors
  // A vector is of string type
  multiset<vector<string>>
  multisetOfVectors;
 
  // Initializing vectors
  vector<string> myVector1
  {"GeeksforGeeks", "GFG"};
  vector<string> myVector2
  {"Python", "Swift", "R"};
  vector<string> myVector3
  {"C", "C++"};
  vector<string> myVector4
  {"GeeksforGeeks", "GFG"};
  vector<string> myVector5
  {"PHP", "HTML"};
 
  // Inserting vectors into multiset
  multisetOfVectors.insert(myVector1);
  multisetOfVectors.insert(myVector2);
  multisetOfVectors.insert(myVector3);
  multisetOfVectors.insert(myVector4);
  multisetOfVectors.insert(myVector5);
 
  // Calling print function
  print(multisetOfVectors);
 
  return 0;
}

Producción:

[ C C++ ]
[ GeeksforGeeks GFG ]
[ GeeksforGeeks GFG ]
[ PHP HTML ]
[ Python Swift R ]

Explicación:

En el resultado anterior, «myVector1» y «myVector4» son iguales. Es por eso que se pueden ver dos copias del mismo vector en la salida.

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 *