logo

UNORDERED_MAP EN C++

Le carte non ordonnée est un conteneur associé qui contient des éléments créés en fusionnant une valeur mappée avec une valeur clé. L'élément est identifié spécifiquement par son valeur clé , et le valeur mappée est le contenu lié à la clé. Les clés et les valeurs peuvent toutes deux être de n'importe quel type établi ou type défini par l'utilisateur . Une carte non ordonnée peut être considérée comme une structure de données de type dictionnaire qui stocke des éléments en elle-même. Les paires séquentielles qu'il contient (valeur clé) permettre la récupération rapide d'un élément spécifique à l'aide de sa clé individuelle.

La clé fournie à la carte est haché dans les indices d'une table de hachage, c'est pourquoi la vitesse de la structure des données dépend fortement de la fonction de hachage, mais en moyenne, le coût de rechercher, insérer et supprimer de la table de hachage est o(1).

Dans le pire des cas, surtout pour les grands entiers premiers, son complexité temporelle peut aller de o(1) à sur) . Il est fortement recommandé d'utiliser une carte dans ce cas pour éviter de recevoir un message. (délai dépassé) problème.

Syntaxe:

 Unordered_mapumap 

Exemple:

 //A c++ program to check an unordered map in it. #include #include using namespace std; int main() { unordered_mapumap; umap[&apos;javatpoint&apos;] = 20; umap[&apos;regular&apos;] = 30; umap[&apos;distribute&apos;] = 40; for (auto y :umap) cout&lt;<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&apos;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>&apos;[]&apos;</strong> to extract a key&apos;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&apos; 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&apos;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&apos;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&apos;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&apos;s element count for each <strong> <em>bucket ()</em> .</strong> </p> <p> <strong>Count()</strong> </p> <p>It gives the unordered map count&apos;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&apos;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&apos;s empty.</p> <p> <strong>Position ()</strong> </p> <p>It determines whether the unordered map container&apos;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 {&apos;one&apos;, 1}, {&apos;two&apos;, 2}, {&apos;three&apos;, 3} }; // here wi will insert the values by the help of the [] operator umap[&apos;the value of pi&apos;] = 3.14; umap[&apos;the value of root2&apos;] = 1.414; umap[&apos;the value ofroot3&apos;] = 1.732; umap[&apos;the value oflog10&apos;] = 2.302; umap[&apos;the value ofloge&apos;] = 1.0; // inserting value by insert function umap.insert(make_pair(&apos;e&apos;, 2.718)); string key = &apos;the value of pi&apos;; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout&lt;&lt; key &lt;<' 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 &amp;str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss&gt;&gt; word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout&lt;&lt; &apos;(&apos; <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<<>

Explication:

Cette sortie justifie spécifiquement le fait que le cartes non ordonnées la valeur de sortie est générée de manière aléatoire clé-valeur manière tandis que la carte affiche la valeur et la clé de manière ordonnée.

Ensemble non ordonné vs carte non ordonnée

Certaines différences entre l'ensemble non ordonné et la carte non ordonnée sont les suivantes :

Carte non ordonnée

  • Seulement (valeur clé) les paires se trouvent dans les éléments d'un carte non ordonnée .
  • Utiliser l'opérateur '[]' pour extraire la valeur correspondante d'une clé à partir d'une carte.

Ensemble non commandé

    Valeur clé les paires sont principalement utilisées pour déterminer si un ensemble est présent ou absent et ne sont pas toujours présentes dans un ensemble non ordonné.
  • En utilisant le fonction trouver() , un élément est recherché. Ainsi, il n’y a pas besoin d’opérateur.

Point important:

Par exemple, prenons la question du comptage de la fréquence des mots individuels. Puisque les décomptes ne peuvent pas être stockés dans ensemble (ou ensemble) non ordonné, nous devons plutôt utiliser une carte non ordonnée.

Carte vs carte non ordonnée

Certaines différences entre la carte et la carte non ordonnée sont les suivantes :

Carte non ordonnée

  • N’importe quel ordre peut être utilisé pour stocker la clé de carte non ordonnée.
  • La mise en œuvre d'une carte non ordonnée entraîne une structure arborescente inégale, rendant impossible le maintien de l'ordre des entrées.
  • Les opérations sur une carte non ordonnée ont généralement un o(1) complexité temporelle .

Carte

  • La carte est une liste ordonnée de clés distinctes.
  • Il est possible de conserver l'ordre des éléments (par parcours d'arbre spécifique) car map utilise une structure arborescente équilibrée.
  • Les opérations cartographiques ont un o complexité temporelle (log n) .

Procédures pour les cartes non ordonnées

De nombreuses fonctions peuvent être utilisées avec une carte non ordonnée. Ceux qui sont les plus utiles sont :

  • Opérateur =
  • Opérateur[]
  • Début et fin de l'itérateur
  • Vide
  • Taille de la capacité
  • Pour une recherche, localisez et comptez.
  • Insérer et supprimer

La liste complète des méthodes d'une carte non ordonnée est présentée ci-dessous :

À():

Cette méthode de carte non ordonnée C++ Retour une référence à la valeur avec l'élément spécifié comme élément clé k .

Commencer():

différence symétrique

Il fournit une valeur de retour qui est un itérateur pointant à la première entrée du conteneur de carte non ordonné.

Fin():

Le bucket de conteneur de cartes non ordonné renvoie un itérateur pointant à l'emplacement après le dernier élément ().

Seau():

Il renvoie le numéro de bucket dans le nombre de buckets de la carte où l'élément avec clé k est placé.

Compte_seau()

Le nombre total de buckets de la carte non ordonnée est compté en utilisant la fonction de comptage de seau. Il peut être appelé sans passer aucun paramètre.

Taille du godet

Il donne le nombre d'éléments du nombre de cartes non ordonnées pour chaque seau () .

Compter()

Il donne le nombre d'éléments du nombre de cartes non ordonnées pour chaque seau () le nombre d'éléments dans une carte non ordonnée avec la plage égale de clé spécifiée doit être compté.

plage_égale()

Il renvoie les limites d'une plage avec tous les éléments du conteneur et une clé qui se compare à k .

Trouver()

Donne un itérateur au vide de l'élément.

Position ()

Il détermine si le conteneur du conteneur de cartes non ordonnées est vide.

Effacer()

gestion des exceptions en Java

Les éléments du conteneur de carte non ordonné peuvent être supprimés à l'aide de la commande effacer() fonction.

Bien que les fonctions permettant d'afficher la taille du compartiment interne, le nombre de compartiments, la fonction de hachage utilisée et diverses politiques de hachage soient également fournies par le bibliothèque c++11 , ils sont moins utiles dans les applications pratiques. En utilisant l'itérateur, nous pouvons parcourir chaque élément de la carte non ordonnée.

Exemple:

 #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 {&apos;one&apos;, 1}, {&apos;two&apos;, 2}, {&apos;three&apos;, 3} }; // here wi will insert the values by the help of the [] operator umap[&apos;the value of pi&apos;] = 3.14; umap[&apos;the value of root2&apos;] = 1.414; umap[&apos;the value ofroot3&apos;] = 1.732; umap[&apos;the value oflog10&apos;] = 2.302; umap[&apos;the value ofloge&apos;] = 1.0; // inserting value by insert function umap.insert(make_pair(&apos;e&apos;, 2.718)); string key = &apos;the value of pi&apos;; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout&lt;&lt; key &lt;<\' 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 &amp;str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss&gt;&gt; word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout&lt;&lt; &apos;(&apos; <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></\'>

Exemple:

 // 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 &amp;str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss&gt;&gt; word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout&lt;&lt; &apos;(&apos; <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>