Multimap es similar a un mapa con la adición de que varios elementos pueden tener las mismas claves. Además, NO se requiere que el par clave-valor y el valor asignado sean únicos en este caso. Una cosa importante a tener en cuenta sobre multimapa es que multimapa siempre mantiene todas las claves ordenadas. Estas propiedades de multimapa lo hacen muy útil en la programación competitiva.
Algunas funciones básicas asociadas con multimapa:
- begin() – Devuelve un iterador al primer elemento en el mapa múltiple
- end() : devuelve un iterador al elemento teórico que sigue al último elemento en el mapa múltiple
- size() – Devuelve el número de elementos en el mapa múltiple
- max_size() : devuelve el número máximo de elementos que puede contener el mapa múltiple
- vacío() – Devuelve si el mapa múltiple está vacío
- pair<int,int> insert(keyvalue,multimapvalue) – Agrega un nuevo elemento al multimapa
Implementación de C++ para ilustrar las funciones anteriores:
CPP
// CPP Program to demonstrate the implementation of multimap #include <iostream> #include <iterator> #include <map> using namespace std; // Driver Code int main() { multimap<int, int> gquiz1; // empty multimap container // insert elements in random order gquiz1.insert(pair<int, int>(1, 40)); gquiz1.insert(pair<int, int>(2, 30)); gquiz1.insert(pair<int, int>(3, 60)); gquiz1.insert(pair<int, int>(6, 50)); gquiz1.insert(pair<int, int>(6, 10)); // printing multimap gquiz1 multimap<int, int>::iterator itr; cout << "\nThe multimap gquiz1 is : \n"; cout << "\tKEY\tELEMENT\n"; for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; } cout << endl; // adding elements randomly, // to check the sorted keys property gquiz1.insert(pair<int, int>(4, 50)); gquiz1.insert(pair<int, int>(5, 10)); // printing multimap gquiz1 again cout << "\nThe multimap gquiz1 after adding extra " "elements is : \n"; cout << "\tKEY\tELEMENT\n"; for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; } cout << endl; // assigning the elements from gquiz1 to gquiz2 multimap<int, int> gquiz2(gquiz1.begin(), gquiz1.end()); // print all elements of the multimap gquiz2 cout << "\nThe multimap gquiz2 after assign from " "gquiz1 is : \n"; cout << "\tKEY\tELEMENT\n"; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; } cout << endl; // remove all elements up to // key with value 3 in gquiz2 cout << "\ngquiz2 after removal of elements less than " "key=3 : \n"; cout << "\tKEY\tELEMENT\n"; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << "\ngquiz2.erase(4) : "; cout << num << " removed \n"; cout << "\tKEY\tELEMENT\n"; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; } cout << endl; // lower bound and upper bound for multimap gquiz1 key = // 5 cout << "gquiz1.lower_bound(5) : " << "\tKEY = "; cout << gquiz1.lower_bound(5)->first << '\t'; cout << "\tELEMENT = " << gquiz1.lower_bound(5)->second << endl; cout << "gquiz1.upper_bound(5) : " << "\tKEY = "; cout << gquiz1.upper_bound(5)->first << '\t'; cout << "\tELEMENT = " << gquiz1.upper_bound(5)->second << endl; return 0; }
The multimap gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 6 50 6 10 The multimap gquiz1 after adding extra elements is : KEY ELEMENT 1 40 2 30 3 60 4 50 5 10 6 50 6 10 The multimap gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 50 5 10 6 50 6 10 gquiz2 after removal of elements less than key=3 : KEY ELEMENT 3 60 4 50 5 10 6 50 6 10 gquiz2.erase(4) : 1 removed KEY ELEMENT 3 60 5 10 6 50 6 10 gquiz1.lower_bound(5) : KEY = 5 ELEMENT = 10 gquiz1.upper_bound(5) : KEY = 6 ELEMENT = 50
Lista de funciones de Multimap
Función |
Definición |
---|---|
multimapa::operador= | Se utiliza para asignar nuevos contenidos al contenedor reemplazando los contenidos existentes. |
multimap::crbegin() y multimap::crend() | crbegin() devuelve un iterador inverso constante que se refiere al último elemento en el contenedor multimapa. crend() devuelve un iterador inverso constante que apunta al elemento teórico antes del primer elemento en el mapa múltiple. |
multimapa::emplace_hint() | Inserte la clave y su elemento en el contenedor multimapa con una pista determinada. |
borrado multimapa() | Elimina todos los elementos del mapa múltiple. |
multimapa vacío() | Devuelve si el mapa múltiple está vacío. |
maxsize multimapa() | Devuelve el número máximo de elementos que puede contener un contenedor multimapa. |
multimapa value_comp() | Devuelve el objeto que determina cómo se ordenan los elementos en el mapa múltiple (‘<‘ por defecto). |
desgarro multimapa | Devuelve un iterador inverso que apunta al elemento teórico que precede al primer elemento del contenedor multimapa. |
multimapa::cbegin() y multimapa::cend() | cbegin() devuelve un iterador constante que se refiere al primer elemento en el contenedor multimapa. cend() devuelve un iterador constante que apunta al elemento teórico que sigue al último elemento en el mapa múltiple. |
multimapa::intercambiar() | Intercambia el contenido de un multimapa con otro multimapa del mismo tipo y tamaño. |
inicio multimapa | Devuelve un iterador que apunta al último elemento del contenedor. |
tamaño multimapa() | Devuelve el número de elementos en el contenedor multimapa. |
multimapa::emplazar() | Inserta la clave y su elemento en el contenedor multimapa. |
multimap::begin() y multimap::end() | begin() devuelve un iterador que se refiere al primer elemento en el contenedor multimapa. end() devuelve un iterador al elemento teórico que sigue al último elemento en el mapa múltiple. |
multimapa upper_bound() | Devuelve un iterador al primer elemento que es equivalente al valor multiasignado con clave-valor ‘g’ o definitivamente irá tras el elemento con clave-valor ‘g’ en el multimapa. |
multimapa::contar() | Devuelve el número de coincidencias con el elemento con clave-valor ‘g’ en el mapa múltiple. |
multimapa::clear() | Elimina el valor clave del mapa múltiple. |
multimapa::buscar() | Devuelve un iterador al elemento con clave-valor ‘g’ en el mapa múltiple si lo encuentra; de lo contrario, devuelve el iterador al final. |
multimapa igual_range() | Devuelve un iterador de pares. El par se refiere a los límites de un rango que incluye todos los elementos en el contenedor que tienen una clave equivalente a k. |
inserción multimapa() | Se utiliza para insertar elementos en el contenedor multimapa. |
límite_inferior multimapa() | Devuelve un iterador al primer elemento que es equivalente al valor multiasignado con clave-valor ‘g’ o definitivamente no irá antes del elemento con clave-valor ‘g’ en el multimapa. |
tecla_comp multimapa() | Devuelve el objeto que determina cómo se ordenan los elementos en el mapa múltiple (‘<‘ por defecto). |
Artículos recientes en Multimapa
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA