logo

UNORDERED_MAP В C++

The неподредена карта е свързан контейнер, който съдържа елементи, създадени чрез сливане на нанесена стойност с ключова стойност. Елементът се идентифицира конкретно от неговия ключова стойност , и картографирана стойност е съдържанието, свързано с ключа. Ключовете и стойностите могат да бъдат от произволни установени или дефиниран от потребителя тип . Неподредената карта може да се разглежда като структура от данни от речников тип, която съхранява елементи в себе си. Последователните двойки, които съдържа (ключ, стойност) позволява бързо извличане на конкретен елемент с помощта на неговия индивидуален ключ.

вмъкнете в клавиатурата

Ключът, предоставен към картата, е хеширани в индексите на хеш таблица, поради което скоростта на структурата на данните силно зависи от хеш функцията, но средно цената на търсене, вмъкване и изтриване от хеш-таблицата е o(1).

В най-лошия случай, особено за големи прости числа, това е времева сложност може да варира от о(1) да се На) . Силно препоръчително е да използвате карта в този случай, за да избегнете получаването на файл (времето е превишено) проблем.

Синтаксис:

 Unordered_mapumap 

Пример:

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

Обяснение:

Този резултат конкретно оправдава факта, че неподредени карти изходната стойност се генерира на случаен принцип ключ към стойност начин, докато картата показва стойност и ключ по подреден начин.

Неподреден набор срещу неподредена карта

Някои разлики между неподреден набор и неподредена карта са както следва:

Неподредена карта

  • само (ключ-стойност) двойки се намират в елементите на an неподредена карта .
  • Използвайте оператора '[]' за извличане на съответната стойност на ключ от карта.

Неподреден комплект

    Ключ-стойност двойките се използват най-вече за определяне дали даден набор присъства или отсъства и не винаги присъстват в неподреден набор.
  • Използвайки функция find(). , се търси елемент. Така няма нужда от оператор.

Важен момент:

Вземете например въпроса за преброяването на честотата на отделните думи. Тъй като броят не може да се съхранява в неподреден набор (или набор), вместо това трябва да използваме неподредена карта.

Карта срещу неподредена карта

Някои разлики между картата и неподредената карта са следните:

Неподредена карта

  • Всеки ред може да се използва за съхраняване на неподредения ключ на картата.
  • Прилагането на неподредена карта води до неравномерна дървовидна структура, което прави невъзможно запазването на реда на записите.
  • Операциите върху неподредена карта обикновено имат o(1) времева сложност .

Карта

  • Картата е подреден списък от отделни ключове.
  • Възможно е да се запази редът на елементите (чрез специфично обхождане на дърво), тъй като картата използва балансирана дървовидна структура.
  • Операциите с картата имат o времева сложност (log n) .

Процедури за неподредена карта

Има множество функции, които могат да се използват с неподредена карта. Тези, които са най-полезни са:

  • Оператор =
  • Оператор[]
  • Начало и край на итератора
  • празна
  • Размер на капацитета
  • За справка, намерете и пребройте.
  • Вмъкване и изтриване

Пълният списък с методи на неподредена карта е показан по-долу:

123 филм

В():

Този c++ неподреден метод на карта се завръща препратка към стойността с посочения елемент като ключ k .

Начало ():

Той осигурява върната стойност, която е an сочещ итератор до първия запис в неподредения контейнер на картата.

Край():

Неподреденият контейнер на картата връща an сочещ итератор до мястото след крайния елемент ().

Кофа():

колко плодове има

Връща номера на кофата в броя на кофата на картата, където елементът с ключ k е поставен.

Bucket_count()

Общият брой кофи на неподредената карта е преброени с помощта на функцията за броене на кофи. Може да се извика без да се предават никакви параметри.

игра pigeon за android

Размер на кофата

Той дава броя на елементите на неподредения брой на картата за всеки кофа () .

Броя()

Той дава броя на елементите на неподредения брой на картата за всеки кофа () трябва да се преброи броят на елементите в неподредена карта с определен ключов равен диапазон.

rdbms

равен_обхват()

Той връща границите на диапазон с всички елементи на контейнера и ключ, с който се сравнява к .

Намирам()

Дава итератор на празния елемент.

Позиция ()

Той определя дали контейнерът на неподредения контейнер на картата е празен.

Изтрива()

Елементите в неподредения контейнер на картата могат да бъдат изтрити с помощта на изтрива() функция.

Въпреки че функциите за преглед на вътрешния размер на кофата, броя на кофата, използваната хеш функция и различни хеш политики също се предоставят от c++11 библиотека , те са по-малко полезни в практически приложения. Използвайки итератор, можем да преминем през всеки елемент в неподредената карта.

Пример:

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

Пример:

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