IL mappa non ordinata è un contenitore associato che contiene elementi creati fondendo un valore mappato con un valore chiave. L'elemento è identificato specificatamente da its valore chiave , e il valore mappato è il contenuto relativo alla chiave. Chiavi e valori possono essere entrambi di qualsiasi tipo stabilito o tipo definito dall'utente . Una mappa non ordinata può essere pensata come una struttura dati del tipo dizionario che memorizza elementi al suo interno. Le coppie sequenziali che contiene (chiave, valore) consentire il recupero rapido di un elemento specifico utilizzando la sua chiave individuale.
strsep
La chiave fornita alla mappa è hash negli indici di una tabella hash, motivo per cui la velocità della struttura dati dipende fortemente dalla funzione hash, ma in media il costo di cercare, inserire ed eliminare dalla tabella hash è o(1).
Nel peggiore dei casi, soprattutto per i grandi numeri primi, è complessità temporale può variare da o(1) A SU) . In questo caso si consiglia vivamente di utilizzare una mappa per evitare di ricevere un messaggio (limite temporale superato) problema.
Sintassi:
Unordered_mapumap
Esempio:
//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<<>
Spiegazione:
Questo output giustifica specificamente il fatto che il file mappe non ordinate il valore di output viene generato in modo casuale chiave-valore modo mentre la mappa mostra valore e chiave in modo ordinato.
Set non ordinato vs mappa non ordinata
Alcune differenze tra il set non ordinato e la mappa non ordinata sono le seguenti:
Mappa non ordinata
- Soltanto (valore-chiave) le coppie si trovano negli elementi di an mappa non ordinata .
- Usa l'operatore '[]' per estrarre il valore corrispondente di una chiave da una mappa.
Insieme non ordinato
- Usando il funzione trova() , viene cercato un elemento. Pertanto non è necessario un operatore.
Punto importante:
Prendiamo ad esempio il problema del conteggio della frequenza delle singole parole. Poiché i conteggi non possono essere archiviati insieme non ordinato (o insieme), dobbiamo invece usare la mappa non ordinata.
Mappa vs. mappa non ordinata
Alcune differenze tra la mappa e la mappa non ordinata sono le seguenti:
Mappa non ordinata
- Qualsiasi ordine può essere utilizzato per memorizzare la chiave della mappa non ordinata.
- L'implementazione di una mappa non ordinata determina una struttura ad albero non uniforme, rendendo impossibile mantenere l'ordine delle voci.
- Le operazioni su una mappa non ordinata in genere hanno un o(1) complessità temporale .
Carta geografica
- La mappa è un elenco ordinato di chiavi distinte.
- È possibile preservare l'ordine degli elementi (attraverso l'attraversamento specifico dell'albero) perché la mappa utilizza una struttura ad albero bilanciata.
- Le operazioni sulla mappa hanno un o complessità temporale (log n) .
Procedure per la mappa non ordinata
Esistono numerose funzioni che possono essere utilizzate con la mappa non ordinata. Quelli che sono più utili sono:
- Operatore =
- Operatore[]
- Inizio e fine dell'iteratore
- Vuoto
- Dimensioni della capacità
- Per una ricerca, individuare e contare.
- Inserisci ed elimina
L'elenco completo dei metodi di una mappa non ordinata è mostrato di seguito:
10 ml in once
A():
Questo metodo di mappa non ordinato C++ ritorna un riferimento al valore con l'elemento specificato come chiave k .
Inizio():
Fornisce un valore restituito che è an puntamento dell'iteratore alla prima voce nel contenitore della mappa non ordinata.
FINE():
Il bucket del contenitore della mappa non ordinato restituisce un file puntamento dell'iteratore alla posizione dopo l'elemento finale ().
Secchio():
è
Restituisce il numero del bucket nel conteggio dei bucket della mappa in cui si trova l'elemento with chiave k è posto.
Conteggio_bucket()
Il numero totale di contenitori della mappa non ordinata è conteggiato utilizzando la funzione di conteggio dei bucket. Può essere chiamato senza passare alcun parametro.
elenchi Java
Dimensione del secchio
Fornisce il conteggio degli elementi del conteggio delle mappe non ordinate per ciascuno secchio () .
Contare()
Fornisce il conteggio degli elementi del conteggio delle mappe non ordinate per ciascuno secchio () deve essere conteggiato il numero di elementi in una mappa non ordinata con l'intervallo di chiave uguale specificato.
ordine casuale sql
intervallo_uguale()
Restituisce i limiti di un intervallo con tutti gli elementi del contenitore e una chiave di confronto K .
Trovare()
Fornisce un iteratore all'elemento vuoto.
Posizione ()
Determina se il contenitore del contenitore della mappa non ordinata è vuoto.
Cancellare()
Gli elementi nel contenitore della mappa non ordinata possono essere eliminati utilizzando il comando cancellare() funzione.
Sebbene le funzioni per visualizzare la dimensione del bucket interno, il conteggio dei bucket, la funzione hash utilizzata e varie policy hash siano fornite anche da libreria c++11 , sono meno utili nelle applicazioni pratiche. Usando l'iteratore, possiamo scorrere ogni elemento nella mappa non ordinata.
Esempio:
#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></\'>
Esempio:
// 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>
\'>