¿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.