El mapa desordenado es un contenedor asociado que contiene elementos creados fusionando un valor asignado con un valor clave. El elemento se identifica específicamente por su valor clave , y el valor mapeado es el contenido relacionado con la clave. Tanto las claves como los valores pueden ser de cualquier tipo establecido o tipo definido por el usuario . Un mapa desordenado puede considerarse como una estructura de datos del tipo diccionario que almacena elementos dentro de sí mismo. Los pares secuenciales que contiene. (valor clave) Permitir la recuperación rápida de un elemento específico utilizando su clave individual.
La clave proporcionada al mapa es Troceado en los índices de una tabla hash, razón por la cual la velocidad de la estructura de datos depende en gran medida de la función hash, pero en promedio, el costo de buscar, insertar y eliminar de la tabla hash es o(1).
En el peor de los casos, especialmente para números primos grandes, su complejidad del tiempo puede variar desde o(1) a en) . Se recomienda encarecidamente utilizar un mapa en este caso para evitar recibir un aviso. (plazo excedido) asunto.
Sintaxis:
Unordered_mapumap
Ejemplo:
//A c++ program to check an unordered map in it. #include #include using namespace std; int main() { unordered_mapumap; umap['javatpoint'] = 20; umap['regular'] = 30; umap['distribute'] = 40; for (auto y :umap) cout<<y.first<< ' << y.second<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> Distribute 40 Regular 30 Javatpoint 20 </pre> <p> <strong>Explanation:</strong> </p> <p>This output specifically justifies the fact that the <strong> <em>unordered map's</em> </strong> output value is generated in a random <strong> <em>key-to-value</em> </strong> manner while the map shows value and key in an ordered fashion.</p> <h2>Unordered set vs Unordered map</h2> <p>Some differences between Unordered set and Unordered map are as follows:</p> <h3>Unordered map</h3> <ul> <li>Only <strong> <em>(key-value)</em> </strong> pairs are found in the elements of an <strong> <em>unordered map</em> </strong> .</li> <li>Use the operator <strong>'[]'</strong> to extract a key's corresponding value from a map.</li> </ul> <h3>Unordered set</h3> <ul> <tr><td> <em>Key-value</em> </td> pairs are mostly utilised to determine whether a set is present or absent and are not always present in an unordered set. <li>Using the <strong> <em>find() function</em> </strong> , an element is searched for. Thus, there is no need for an operator.</li> </tr></ul> <p> <strong>Important point:</strong> </p> <p>For instance, take the issue of counting the frequency of individual words. Since, counts cannot be stored in <strong> <em>unordered set (or set),</em> </strong> we must instead use unordered map.</p> <h2>Map vs. Unordered map</h2> <p>Some differences between the Map and Unordered map are as follows:</p> <h3>Unordered map</h3> <ul> <li>Any order may be used to store the unordered map key.</li> <li>The implementation of unordered map results in an uneven tree structure, making it impossible to retain the order of the entries.</li> <li>Operations on an unordered map typically have an <strong> <em>o(1) time complexity</em> </strong> .</li> </ul> <h3>Map</h3> <ul> <li>The map is an ordered list of distinct keys.</li> <li>It is possible to preserve the elements' order (by specific tree traversal) because map uses a balanced tree structure.</li> <li>The map operations have an <strong> <em>o time complexity (log n)</em> </strong> .</li> </ul> <h2>Procedures for unordered map</h2> <p>There are numerous functions that can be used with unordered map. The ones who are most helpful are:</p> <ul> <li>Operator =</li> <li>Operator[]</li> <li>Beginning and ending of the iterator</li> <li>Empty</li> <li>Size of the capacity</li> <li>For a lookup, locate and count.</li> <li>Insert and delete</li> </ul> <p>The full list of an unordered map's methods is shown below:</p> <p> <strong>At():</strong> </p> <p>This c++ unordered map method <strong> <em>returns</em> </strong> a reference to the value with the specified element as the <strong> <em>key k</em> </strong> .</p> <p> <strong>Begin():</strong> </p> <p>It provides a return value that is an <strong> <em>iterator pointing</em> </strong> to the first entry in the unordered map container.</p> <p> <strong>End():</strong> </p> <p>The unordered map container bucket returns an <strong> <em>iterator pointing</em> </strong> to the location after the final element ().</p> <p> <strong>Bucket():</strong> </p> <p>It returns the bucket number in the map's bucket count where the element with <strong> <em>key k</em> </strong> is placed.</p> <p> <strong>Bucket_count()</strong> </p> <p>The unordered map's total number of buckets is <strong> <em>tallied</em> </strong> using the bucket count function. It can be called without passing any parameters.</p> <p> <strong>Bucket size</strong> </p> <p>It gives the unordered map count's element count for each <strong> <em>bucket ()</em> .</strong> </p> <p> <strong>Count()</strong> </p> <p>It gives the unordered map count's element count for each <strong> <em>bucket ()</em> </strong> the number of elements in an unordered map with the specified key equal range should be counted.</p> <p> <strong>Equal_eange()</strong> </p> <p>It returns the boundaries of a range with all the container's items and a key that compares to <strong> <em>k</em> </strong> .</p> <p> <strong>Find()</strong> </p> <p>Gives an iterator to the element's empty.</p> <p> <strong>Position ()</strong> </p> <p>It determines whether the unordered map container's container is empty.</p> <p> <strong>Erase()</strong> </p> <p>Elements in the unordered map container can be deleted using the <strong> <em>erase()</em> </strong> function.</p> <p>Although the functions to view the internal bucket size, bucket count, used hash function, and various hash policies are also provided by the <strong> <em>c++11 library</em> </strong> , they are less helpful in practical applications. Using iterator, we may loop through every element in the unordered map.</p> <h3>Example:</h3> <pre> #include #include using namespace std; int main() { // when we will declare a umap it must be of type and here the key will be of string type and the mapped value of double in nature unordered_mapumap = { //in this we will insert the element in map directly {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<' cannot retrieved '; if key found then iterator to that is returned else cout<< 'retrieved '<< << ' '; ; (umap.find(key)="=" umap.end()) <<' retrieved '; 'found <<endl; now we will iterate over all value of umap unordered_map::iterator itr; ' the entire elements : '; for (itr="umap.begin();" itr !="umap.end();" itr++) { cout<first ' <second } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Retrieved the value of pi Lambda value cannot retrieved The entire elements : E 2.718 The value ofloge 1 The value oflog10 2.302 The value of root2 1.414 The value ofroot3 1.732 The value of pi 3.14 Two 2 Three 3 One 1 </pre> <h3>Example:</h3> <pre> // It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << ', ' <second ') '; } int main() { string str="java t points questions " 'learn programs'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first></pre></'></pre></y.first<<>
Explicación:
tipos de datos primitivos en java
Este resultado justifica específicamente el hecho de que el mapas desordenados El valor de salida se genera de forma aleatoria. clave-valor mientras que el mapa muestra el valor y la clave de forma ordenada.
Conjunto desordenado vs mapa desordenado
Algunas diferencias entre el conjunto desordenado y el mapa desordenado son las siguientes:
mapa desordenado
- Solo (valor clave) Los pares se encuentran en los elementos de un mapa desordenado .
- utilizar el operador '[]' para extraer el valor correspondiente de una clave de un mapa.
conjunto desordenado
- Utilizando el función buscar() , se busca un elemento. Por tanto, no hay necesidad de un operador.
Punto importante:
Tomemos, por ejemplo, la cuestión de contar la frecuencia de palabras individuales. Dado que los recuentos no se pueden almacenar en conjunto (o conjunto) desordenado, en su lugar debemos usar un mapa desordenado.
Mapa versus mapa desordenado
Algunas diferencias entre el mapa y el mapa desordenado son las siguientes:
mapa desordenado
- Se puede utilizar cualquier orden para almacenar la clave del mapa desordenada.
- La implementación de un mapa desordenado da como resultado una estructura de árbol desigual, lo que hace imposible mantener el orden de las entradas.
- Las operaciones en un mapa desordenado normalmente tienen una o(1) complejidad del tiempo .
Mapa
- El mapa es una lista ordenada de claves distintas.
- Es posible preservar el orden de los elementos (mediante un recorrido de árbol específico) porque el mapa utiliza una estructura de árbol equilibrada.
- Las operaciones del mapa tienen un o complejidad del tiempo (log n) .
Procedimientos para mapas desordenados.
Existen numerosas funciones que se pueden utilizar con mapas desordenados. Los que son más útiles son:
- Operador =
- Operador[]
- Principio y final del iterador.
- Vacío
- Tamaño de la capacidad
- Para realizar una búsqueda, localizar y contar.
- Insertar y eliminar
La lista completa de los métodos de un mapa desordenado se muestra a continuación:
comparación de cadenas
En():
Este método de mapa desordenado de C++ devoluciones una referencia al valor con el elemento especificado como clave k .
Comenzar():
Proporciona un valor de retorno que es un iterador apuntando a la primera entrada en el contenedor del mapa desordenado.
Fin():
El contenedor de mapas desordenado devuelve un iterador apuntando a la ubicación después del elemento final ().
tipo de en java
Balde():
Devuelve el número de depósito en el recuento de depósitos del mapa donde se encuentra el elemento con clave k es colocado.
cubo_count()
El número total de depósitos del mapa desordenado es contado utilizando la función de recuento de cubos. Se puede llamar sin pasar ningún parámetro.
Tamaño del cubo
Proporciona el recuento de elementos del mapa desordenado para cada balde () .
Contar()
Proporciona el recuento de elementos del mapa desordenado para cada balde () Se debe contar el número de elementos en un mapa desordenado con el rango igual de clave especificado.
rango_igual()
Devuelve los límites de un rango con todos los elementos del contenedor y una clave que se compara con k .
Encontrar()
estado de git -s
Da un iterador al elemento vacío.
Posición ()
Determina si el contenedor del mapa desordenado está vacío.
Borrar()
Los elementos en el contenedor del mapa desordenado se pueden eliminar usando el borrar() función.
Aunque las funciones para ver el tamaño del depósito interno, el recuento de depósitos, la función hash utilizada y varias políticas de hash también las proporciona biblioteca c ++ 11 , son menos útiles en aplicaciones prácticas. Usando el iterador, podemos recorrer cada elemento en el mapa desordenado.
Ejemplo:
#include #include using namespace std; int main() { // when we will declare a umap it must be of type and here the key will be of string type and the mapped value of double in nature unordered_mapumap = { //in this we will insert the element in map directly {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<\' cannot retrieved \'; if key found then iterator to that is returned else cout<< \'retrieved \'<< << \' \'; ; (umap.find(key)="=" umap.end()) <<\' retrieved \'; \'found <<endl; now we will iterate over all value of umap unordered_map::iterator itr; \' the entire elements : \'; for (itr="umap.begin();" itr !="umap.end();" itr++) { cout<first \' <second } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Retrieved the value of pi Lambda value cannot retrieved The entire elements : E 2.718 The value ofloge 1 The value oflog10 2.302 The value of root2 1.414 The value ofroot3 1.732 The value of pi 3.14 Two 2 Three 3 One 1 </pre> <h3>Example:</h3> <pre> // It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << \', \' <second \') \'; } int main() { string str="java t points questions " \'learn programs\'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first></pre></\'>
Ejemplo:
// It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << \', \' <second \') \'; } int main() { string str="java t points questions " \'learn programs\'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first>
\'>