logo

UNORDERED_MAP I C++

Det uordnet kort er en tilknyttet beholder, der indeholder elementer, der er oprettet ved at fusionere en tilknyttet værdi med en nøgleværdi. Elementet identificeres specifikt ved dets nøgleværdi , og kortlagt værdi er indholdet relateret til nøglen. Nøgler og værdier kan både være af en hvilken som helst etableret eller brugerdefineret type . Et uordnet kort kan opfattes som en datastruktur af ordbogstypen, der gemmer elementer i sig selv. De sekventielle par den holder (nøgle, værdi) muliggør hurtig hentning af et specifikt element ved hjælp af dets individuelle nøgle.

forskel på middag og aftensmad

Nøglen leveret til kortet er hash ind i indekserne i en hash-tabel, hvorfor hastigheden af ​​datastrukturen i høj grad afhænger af hashfunktionen, men i gennemsnit er omkostningerne ved søg, indsæt og slet fra hash-tabellen er o(1).

I værste fald, især for store primtal, er dens tidskompleksitet kan variere fra o(1) til på) . Det anbefales stærkt at bruge et kort i dette tilfælde for at undgå at modtage en tl (tidsfristen er overskredet) problem.

Syntaks:

 Unordered_mapumap 

Eksempel:

 //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<<>

Forklaring:

Dette output retfærdiggør specifikt det faktum, at uordnede kort outputværdien genereres tilfældigt nøgle-til-værdi måde, mens kortet viser værdi og nøgle på en ordnet måde.

Uordnet sæt vs Uordnet kort

Nogle forskelle mellem Unordered set og Unordered map er som følger:

Uordnet kort

  • Kun (nøgleværdi) par findes i elementerne i en uordnet kort .
  • Brug operatøren '[]' at udtrække en nøgles tilsvarende værdi fra et kort.

Uordnet sæt

    Nøgleværdi par bruges for det meste til at bestemme, om et sæt er til stede eller fraværende og er ikke altid til stede i et uordnet sæt.
  • Bruger find() funktion , søges der efter et element. Der er således ikke behov for en operatør.

Vigtigt punkt:

Tag for eksempel spørgsmålet om at tælle hyppigheden af ​​individuelle ord. Da tællinger ikke kan gemmes i uordnet sæt (eller sæt), vi skal i stedet bruge uordnet kort.

Kort vs. uordnet kort

Nogle forskelle mellem kortet og det uordnede kort er som følger:

Uordnet kort

  • Enhver ordre kan bruges til at gemme den uordnede kortnøgle.
  • Implementeringen af ​​uordnet kort resulterer i en ujævn træstruktur, hvilket gør det umuligt at bevare rækkefølgen af ​​indtastningerne.
  • Operationer på et uordnet kort har typisk en o(1) tidskompleksitet .

Kort

  • Kortet er en ordnet liste over forskellige nøgler.
  • Det er muligt at bevare elementernes rækkefølge (ved specifik trægennemgang), fordi kortet bruger en afbalanceret træstruktur.
  • Kortoperationerne har en o tidskompleksitet (log n) .

Procedurer for uordnet kort

Der er adskillige funktioner, der kan bruges med uordnet kort. Dem der er mest hjælpsomme er:

  • Operatør =
  • Operatør[]
  • Begyndelsen og slutningen af ​​iteratoren
  • Tom
  • Kapacitetens størrelse
  • Find og tæl for et opslag.
  • Indsæt og slet

Den fulde liste over et uordnet korts metoder er vist nedenfor:

ekspertsystemer

På():

Denne c++ uordnede kortmetode vender tilbage en reference til værdien med det angivne element som nøgle k .

Begynde():

Det giver en returværdi, der er en iterator peger til den første post i den uordnede kortbeholder.

Ende():

Den uordnede kortbeholderspand returnerer en iterator peger til placeringen efter det sidste element ().

Spand():

int til char

Det returnerer bucket-nummeret i kortets bucket count, hvor elementet med nøgle k er placeret.

java konstant

Bucket_count()

Det uordnede korts samlede antal spande er talt op ved hjælp af skovltællefunktionen. Det kan kaldes uden at passere nogen parametre.

Spand størrelse

Det giver den uordnede korttællings elementantal for hver spand () .

Tælle()

Det giver den uordnede korttællings elementantal for hver spand () antallet af elementer i et uordnet kort med det angivne nøgleområde skal tælles.

java har næste

lige_område()

Det returnerer grænserne for et område med alle beholderens genstande og en nøgle, der kan sammenlignes med k .

Find()

Giver en iterator til elementets tomme.

Position ()

Det bestemmer, om den uordnede kortbeholders beholder er tom.

Slette()

Elementer i den uordnede kortbeholder kan slettes ved hjælp af slette() fungere.

Selvom funktionerne til at se den interne bucket-størrelse, bucket-antal, brugt hash-funktion og forskellige hash-politikker også leveres af c++11 bibliotek , de er mindre nyttige i praktiske applikationer. Ved at bruge iterator kan vi gå gennem hvert element i det uordnede kort.

Eksempel:

 #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></\'>

Eksempel:

 // 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>