¿Qué es una array?
Una array en cualquier lenguaje de programación es una estructura de datos que se utiliza para almacenar elementos o elementos de datos de tipos de datos similares en ubicaciones de memoria contiguas y se puede acceder a los elementos aleatoriamente utilizando índices de una array. Las arrays son eficientes cuando queremos almacenar una gran cantidad de elementos que también tienen tipos de datos similares.
¿Qué es el mapa desordenado?
Unordered_map es un contenedor asociado que almacena elementos formados por la combinación de clave-valor y un valor mapeado. El valor de la clave se utiliza para identificar de forma única el elemento y el valor asignado es el contenido asociado con la clave. Tanto la clave como el valor pueden ser de cualquier tipo predefinido o definido por el usuario. Los elementos de un mapa desordenado no están dispuestos en ningún orden en particular. Internamente, se implementa un mapa desordenado mediante una tabla hash.
Funciones utilizadas con el mapa desordenado:
- at() : Esta función en C++ unordered_map devuelve la referencia al valor con el elemento como clave k.
- begin() : Devuelve un iterador que apunta al primer elemento del contenedor en el contenedor unordered_map
- end() : Devuelve un iterador que apunta a la posición más allá del último elemento en el contenedor en el contenedor unordered_map
Este artículo se centra en cómo se puede usar la array de mapas desordenados en C++. Una array de mapas desordenados puede ser bastante útil al diseñar estructuras de datos complejas.
Array de mapas desordenados
C++ nos permite una facilidad para crear una array de mapas desordenados. Una array de mapas desordenados es una array en la que cada elemento es un mapa en sí mismo.
Sintaxis:
unordered_map<<tipoDatos1, TipoDatos2>> miContenedor[N];
Aquí,
N: el tamaño de la array de mapas no ordenados
dataType1: el tipo de datos para la clave
dataType2: el tipo de datos para el valor
Ejemplo 1: a continuación se muestra el programa C++ para implementar el enfoque:
C++
// C++ program to demonstrate the // working of array of unordered maps in C++ #include <bits/stdc++.h> using namespace std; // Function to print unordered map elements // specified at the index, "index" void print(unordered_map<int, bool>& myMap, int index) { cout << "The unordered map elements stored " << "at the index " << index << ": \n"; cout << "Key Value\n"; // Each element of the map is a pair on // its own for (auto pr : myMap) { // Each element of the map is a pair // on its own cout << pr.first << " " << pr.second << '\n'; } cout << '\n'; } // Function to iterate over all the array void print(unordered_map<int, bool>* myContainer, int n) { // Iterating over myContainer elements // Each element is a map on its own for (int i = 0; i < n; i++) { print(myContainer[i], i); } } // Driver code int main() { // Declaring an array of unordered maps // In unordered map Key is of type int // Value is of type bool unordered_map<int, bool> myContainer[3]; // Mapping values to the unordered map // stored at the index 0 myContainer[0][10] = true; myContainer[0][15] = false; myContainer[0][20] = true; myContainer[0][25] = false; // Mapping values to the unordered map // stored at the index 1 myContainer[1][30] = true; myContainer[1][35] = false; myContainer[1][40] = true; myContainer[1][45] = false; // Mapping values to the unordered map // stored at the index 2 myContainer[2][50] = true; myContainer[2][55] = false; myContainer[2][60] = true; myContainer[2][65] = false; // Calling print function to iterate // over myContainer elements print(myContainer, 3); return 0; }
Los elementos del mapa no ordenados almacenados en el índice 0:
Valor clave
25 0
20 1
10 1
15 0Los elementos del mapa no ordenados almacenados en el índice 1:
Valor clave
45 0
40 1
30 1
35 0Los elementos del mapa no ordenados almacenados en el índice 2:
Valor clave
65 0
60 1
50 1
55 0
Ejemplo 2: a continuación se muestra el programa C++ para implementar el enfoque:
C++
// C++ program to demonstrate the // working of array of maps in C++ #include <bits/stdc++.h> using namespace std; // Function to print unordered map elements // specified at the index, "index" void print(unordered_map<string, bool>& myMap, int index) { cout << "The unordered map elements stored " << "at the index " << index << ": \n"; cout << "Key Value\n"; // Each element of the unordered map is // a pair on its own for (auto pr : myMap) { cout << pr.first << " " << pr.second << '\n'; } cout << '\n'; } // Function to iterate over the unordered // map corresponding to an index void print(unordered_map<string, bool>* myContainer, int n) { for (int i = 0; i < n; i++) { print(myContainer[i], i); } } // Driver code int main() { // Declaring an array of unordered maps // In unordered map Key is of type string // Value is of type bool unordered_map<string, bool> myContainer[3]; // Mapping values to the unordered map // stored at the index 0 myContainer[0]["Code"] = true; myContainer[0]["HTML"] = false; myContainer[0]["Java"] = true; myContainer[0]["Solo"] = false; // Mapping values to the unordered map // stored at the index 1 myContainer[1]["PHP"] = true; myContainer[1]["CSS"] = false; myContainer[1]["C++"] = true; myContainer[1]["Lab"] = false; // Mapping values to the unordered map // stored at the index 2 myContainer[2]["Swift"] = true; myContainer[2]["Cobol"] = false; myContainer[2]["Fizzy"] = true; myContainer[2]["Pizza"] = false; // Calling print function to print // myContainer elements print(myContainer, 3); return 0; }
Los elementos del mapa no ordenados almacenados en el índice 0:
Clave Valor
Solo 0
Java 1
Código 1
HTML 0Los elementos del mapa no ordenados almacenados en el índice 1:
Key Value
Lab 0
C++ 1
PHP 1
CSS 0Los elementos del mapa no ordenados almacenados en el índice 2:
Clave Valor
Fizzy 1
Pizza 0
Swift 1
Cobol 0