logo

UNORDERED_MAP W C++

The nieuporządkowana mapa to powiązany kontener, w którym znajdują się elementy utworzone przez połączenie odwzorowanej wartości z wartością klucza. Element jest identyfikowany konkretnie poprzez jego kluczowa wartość , oraz mapowana wartość to treść powiązana z kluczem. Zarówno klucze, jak i wartości mogą mieć dowolne ustalone wartości lub typ zdefiniowany przez użytkownika . Mapę nieuporządkowaną można traktować jako strukturę danych typu słownikowego, która przechowuje w sobie elementy. Kolejne pary, które zawiera (kluczowa wartość) umożliwiają szybkie odnalezienie konkretnego elementu za pomocą jego indywidualnego klucza.

Klucz dostarczony do mapy to hashowane do indeksów tabeli mieszającej, dlatego szybkość struktury danych w dużym stopniu zależy od funkcji skrótu, ale średnio koszt wyszukaj, wstaw i usuń z tablicy mieszającej wynosi o(1).

W najgorszym przypadku, szczególnie w przypadku dużych liczb całkowitych pierwszych, jego złożoność czasu może wahać się od o(1) Do NA) . W tym przypadku zdecydowanie zaleca się skorzystanie z mapy, aby uniknąć otrzymania tytułu (przekroczono limit czasu) wydanie.

Składnia:

 Unordered_mapumap 

Przykład:

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

Wyjaśnienie:

Wynik ten w szczególności uzasadnia fakt, że nieuporządkowane mapy wartość wyjściowa jest generowana losowo klucz-wartość sposób, podczas gdy mapa pokazuje wartość i klucz w uporządkowany sposób.

Nieuporządkowany zbiór a nieuporządkowana mapa

Niektóre różnice między zestawem nieuporządkowanym a mapą nieuporządkowaną są następujące:

Nieuporządkowana mapa

  • Tylko (kluczowa wartość) pary występują w elementach an nieuporządkowana mapa .
  • Skorzystaj z operatora „[]” aby wyodrębnić odpowiadającą wartość klucza z mapy.

Zestaw nieuporządkowany

    Kluczowa wartość pary są najczęściej wykorzystywane do określenia, czy zbiór jest obecny, czy nie, i nie zawsze są obecne w zbiorze nieuporządkowanym.
  • Używając funkcja znajdź(). , wyszukiwany jest element. Dlatego nie jest potrzebny operator.

Ważny punkt:

Weźmy na przykład kwestię liczenia częstotliwości występowania poszczególnych słów. Ponieważ nie można przechowywać liczników zbiór nieuporządkowany (lub zbiór), zamiast tego musimy użyć nieuporządkowanej mapy.

Mapa a mapa nieuporządkowana

Niektóre różnice między mapą a mapą nieuporządkowaną są następujące:

Nieuporządkowana mapa

  • Do przechowywania nieuporządkowanego klucza mapy można użyć dowolnej kolejności.
  • Implementacja mapy nieuporządkowanej skutkuje nierównomierną strukturą drzewa, uniemożliwiającą zachowanie kolejności wpisów.
  • Operacje na nieuporządkowanej mapie zazwyczaj mają o(1) złożoność czasowa .

Mapa

  • Mapa jest uporządkowaną listą odrębnych kluczy.
  • Możliwe jest zachowanie kolejności elementów (poprzez określone przechodzenie przez drzewo), ponieważ mapa wykorzystuje zrównoważoną strukturę drzewa.
  • Operacje na mapie mają o złożoność czasowa (log n) .

Procedury dla mapy nieuporządkowanej

Istnieje wiele funkcji, których można używać z mapą nieuporządkowaną. Najbardziej pomocne są:

  • Operator =
  • Operator[]
  • Początek i koniec iteratora
  • Pusty
  • Rozmiar pojemności
  • Aby wyszukać, zlokalizuj i policz.
  • Wstaw i usuń

Pełna lista metod mapy nieuporządkowanej jest pokazana poniżej:

Na():

Ta nieuporządkowana metoda mapy w języku C++ zwroty odwołanie do wartości z określonym elementem jako klucz k .

Zaczynać():

tablice basha

Zapewnia wartość zwracaną, która jest wskazanie iteratora do pierwszego wpisu w kontenerze mapy nieuporządkowanej.

Koniec():

Nieuporządkowany zasobnik kontenera mapy zwraca wartość an wskazanie iteratora do lokalizacji za ostatnim elementem ().

Wiaderko():

Zwraca numer segmentu w liczbie segmentów mapy, w którym znajduje się element klucz k Jest położone.

Liczba_wiader()

Całkowita liczba segmentów na nieuporządkowanej mapie wynosi zliczone za pomocą funkcji liczenia wiader. Można go wywołać bez przekazywania jakichkolwiek parametrów.

Rozmiar wiadra

Podaje liczbę elementów nieuporządkowanej liczby map dla każdego wiaderko () .

Liczyć()

Podaje liczbę elementów nieuporządkowanej liczby map dla każdego wiaderko () należy policzyć liczbę elementów mapy nieuporządkowanej o określonym równym zakresie klucza.

równy_zakres()

Zwraca granice zakresu ze wszystkimi elementami kontenera i klucz, który porównuje k .

Znajdować()

Daje iterator pustemu elementowi.

Pozycja ()

Określa, czy kontener kontenera nieuporządkowanej mapy jest pusty.

Usuwać()

porównywalna lista

Elementy w kontenerze mapy nieuporządkowanej można usunąć za pomocą usuwać() funkcjonować.

Chociaż funkcje umożliwiające przeglądanie wewnętrznego rozmiaru segmentu, jego liczby, używanej funkcji skrótu i ​​różnych zasad mieszania są również udostępniane przez biblioteka c++11 , są mniej przydatne w zastosowaniach praktycznych. Używając iteratora, możemy przejść przez każdy element nieuporządkowanej mapy.

Przykład:

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

Przykład:

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