logo

C++'DA UNORDERED_MAP

sırasız harita eşlenen bir değerin bir anahtar değerle birleştirilmesiyle oluşturulan öğeleri tutan ilişkili bir kapsayıcıdır. Eleman özel olarak onun tarafından tanımlanır anahtar değer , ve eşlenen değer anahtarla ilgili içeriktir. Anahtarlar ve değerler herhangi bir yerleşik veya kullanıcı tanımlı tür . Sırasız bir harita, elemanları kendi içinde saklayan sözlük tipinde bir veri yapısı olarak düşünülebilir. Tuttuğu sıralı çiftler (anahtar, değer) bireysel anahtarını kullanarak belirli bir öğenin hızlı bir şekilde alınmasını sağlar.

Haritaya verilen anahtar karma karma tablosunun endekslerine dönüştürülür; bu nedenle veri yapısının hızı ağırlıklı olarak karma işlevine bağlıdır, ancak ortalama olarak maliyeti arama, ekleme ve silme karma tablosundan o(1)'dir.

En kötü durumda, özellikle büyük asal tamsayılar için, zaman karmaşıklığı arasında değişebilir o(1) ile Açık) . Bu durumda bir mesaj almaktan kaçınmak için bir harita kullanmanız önemle tavsiye edilir. (zaman sınırı aşıldı) sorun.

Sözdizimi:

 Unordered_mapumap 

Örnek:

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

Açıklama:

Arraylist'ten kaldırılıyor

Bu çıktı özellikle şu gerçeği haklı çıkarmaktadır: sıralanmamış haritalar çıkış değeri rastgele oluşturulur anahtar-değer Harita değeri ve anahtarı sıralı bir şekilde gösterirken.

Sırasız küme ve Sırasız harita

Sırasız küme ile Sırasız harita arasındaki bazı farklar şunlardır:

Sırasız harita

  • Sadece (anahtar/değer çifti) çiftleri bir elementin elemanlarında bulunur sırasız harita .
  • Operatörü kullanın '[]' Bir anahtarın karşılık gelen değerini bir haritadan çıkarmak için.

Sırasız küme

    Anahtar/değer çifti çiftler çoğunlukla bir kümenin mevcut olup olmadığını belirlemek için kullanılır ve sırasız bir kümede her zaman mevcut değildir.
  • Kullanmak bul() işlevi , bir eleman aranır. Böylece operatöre ihtiyaç duyulmaz.

Önemli nokta:

Örneğin, tek tek kelimelerin sıklığını sayma konusunu ele alalım. Sayımlar saklanamadığı için sırasız küme (veya küme), bunun yerine sırasız harita kullanmalıyız.

Harita ve Sırasız harita

Harita ve Sırasız harita arasındaki bazı farklar şunlardır:

Sırasız harita

  • Sıralanmamış harita anahtarını saklamak için herhangi bir sıra kullanılabilir.
  • Sırasız haritanın uygulanması, düzensiz bir ağaç yapısına neden olur ve girişlerin sırasının korunmasını imkansız hale getirir.
  • Sırasız bir harita üzerindeki işlemler genellikle o(1) zaman karmaşıklığı .

Harita

  • Harita, farklı anahtarların sıralı bir listesidir.
  • Harita dengeli bir ağaç yapısı kullandığından öğelerin sırasını (belirli ağaç geçişleriyle) korumak mümkündür.
  • Harita işlemlerinin bir o zaman karmaşıklığı (log n) .

Sırasız haritaya ilişkin prosedürler

Sırasız haritayla kullanılabilecek çok sayıda fonksiyon vardır. En çok yardımcı olanlar şunlardır:

  • Operatör =
  • Şebeke[]
  • Yineleyicinin başlangıcı ve bitişi
  • Boş
  • Kapasite boyutu
  • Arama için bulun ve sayın.
  • Ekle ve sil

Sırasız bir haritanın yöntemlerinin tam listesi aşağıda gösterilmiştir:

ayda kaç hafta

():

Bu C++ sırasız harita yöntemi İadeler belirtilen öğeye sahip değere bir referans anahtar k .

Başlamak():

Bir dönüş değeri sağlar yineleyici işaret sıralanmamış harita kapsayıcısındaki ilk girişe.

k en yakın komşu algoritması

Son():

Sırasız harita kapsayıcısı kümesi bir yineleyici işaret son öğeden () sonraki konuma.

Kova():

Öğenin bulunduğu haritanın kova sayısında kova numarasını döndürür. anahtar k yerleştirilmiş.

Bucket_count()

Sırasız haritanın toplam paket sayısı: sayılan kova sayımı fonksiyonunu kullanarak. Herhangi bir parametre geçmeden çağrılabilir.

Kova boyutu

Her biri için sırasız harita sayısının eleman sayısını verir. Kova () .

Saymak()

1/1000

Her biri için sırasız harita sayısının eleman sayısını verir. Kova () Belirtilen anahtar eşit aralığına sahip sırasız bir haritadaki öğelerin sayısı sayılmalıdır.

eşit_aralık()

Tüm kapsayıcının öğelerini ve bunlarla karşılaştırılan bir anahtarı içeren bir aralığın sınırlarını döndürür. k .

Bulmak()

dizeyi karaktere dönüştür Java

Öğenin boşluğuna bir yineleyici verir.

Konum ()

Sırasız harita konteynerinin konteynerinin boş olup olmadığını belirler.

Sil()

Sıralanmamış harita kapsayıcısındaki öğeler, kullanılarak silinebilir. sil() işlev.

Her ne kadar dahili paket boyutunu, paket sayısını, kullanılan karma işlevini ve çeşitli karma politikalarını görüntüleme işlevleri de tarafından sağlanıyor c++11 kütüphanesi pratik uygulamalarda daha az faydalıdırlar. Yineleyiciyi kullanarak sırasız haritadaki her öğe arasında döngü yapabiliriz.

Örnek:

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

Örnek:

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