Der ungeordnete Karte ist ein zugehöriger Container, der Elemente enthält, die durch die Fusion eines zugeordneten Werts mit einem Schlüsselwert erstellt wurden. Das Element wird spezifisch durch seine identifiziert Schlüsselwert , und das zugeordneter Wert ist der Inhalt, der sich auf den Schlüssel bezieht. Schlüssel und Werte können beide von beliebiger etablierter oder beliebiger Bedeutung sein Benutzerdefinierter Typ . Eine ungeordnete Karte kann man sich als eine Datenstruktur vom Typ Wörterbuch vorstellen, die Elemente in sich selbst speichert. Die sequentiellen Paare, die es enthält (Schlüsselwert) ermöglichen das schnelle Abrufen eines bestimmten Elements mithilfe seines individuellen Schlüssels.
Der für die Karte bereitgestellte Schlüssel lautet gehasht in die Indizes einer Hash-Tabelle, weshalb die Geschwindigkeit der Datenstruktur stark von der Hash-Funktion abhängt, im Durchschnitt jedoch die Kosten dafür Suchen, Einfügen und Löschen aus der Hash-Tabelle ist o(1).
Java-Lambda-Beispiel
Im schlimmsten Fall, insbesondere bei großen Primzahlen, ist dies der Fall Zeitkomplexität kann reichen von o(1) Zu An) . In diesem Fall wird dringend empfohlen, eine Karte zu verwenden, um den Empfang einer Datei zu vermeiden (Zeitlimit überschritten) Ausgabe.
Syntax:
Unordered_mapumap
Beispiel:
//A c++ program to check an unordered map in it. #include #include using namespace std; int main() { unordered_mapumap; umap['javatpoint'] = 20; umap['regular'] = 30; umap['distribute'] = 40; for (auto y :umap) cout<<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'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>'[]'</strong> to extract a key'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' 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'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'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'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's element count for each <strong> <em>bucket ()</em> .</strong> </p> <p> <strong>Count()</strong> </p> <p>It gives the unordered map count'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'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's empty.</p> <p> <strong>Position ()</strong> </p> <p>It determines whether the unordered map container'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 {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<' 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 &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <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<<>
Erläuterung:
Diese Ausgabe rechtfertigt ausdrücklich die Tatsache, dass die ungeordnete Karten Der Ausgabewert wird zufällig generiert Schlüssel zum Wert während die Karte Wert und Schlüssel in geordneter Weise anzeigt.
Ungeordneter Satz vs. ungeordnete Karte
Einige Unterschiede zwischen ungeordnetem Satz und ungeordneter Karte sind wie folgt:
Ungeordnete Karte
- Nur (Schlüsselwert) Paare finden sich in den Elementen von an ungeordnete Karte .
- Benutzen Sie den Operator '[]' um den entsprechenden Wert eines Schlüssels aus einer Karte zu extrahieren.
Ungeordneter Satz
- Verwendung der find()-Funktion , wird nach einem Element gesucht. Somit ist kein Bediener erforderlich.
Wichtiger Punkt:
Nehmen wir zum Beispiel die Frage, wie oft einzelne Wörter vorkommen. Da Zählungen nicht gespeichert werden können ungeordnete Menge (oder Menge), Wir müssen stattdessen eine ungeordnete Karte verwenden.
Karte vs. ungeordnete Karte
Einige Unterschiede zwischen der Karte und der ungeordneten Karte sind wie folgt:
Ungeordnete Karte
- Zum Speichern des ungeordneten Kartenschlüssels kann jede Reihenfolge verwendet werden.
- Die Implementierung einer ungeordneten Karte führt zu einer ungleichmäßigen Baumstruktur, sodass die Reihenfolge der Einträge nicht beibehalten werden kann.
- Operationen auf einer ungeordneten Karte haben normalerweise eine o(1) Zeitkomplexität .
Karte
- Die Karte ist eine geordnete Liste unterschiedlicher Schlüssel.
- Es ist möglich, die Reihenfolge der Elemente beizubehalten (durch spezifische Baumdurchquerung), da Map eine ausgewogene Baumstruktur verwendet.
- Die Kartenoperationen verfügen über eine o Zeitkomplexität (log n) .
Verfahren für ungeordnete Karten
Es gibt zahlreiche Funktionen, die mit ungeordneter Karte verwendet werden können. Am hilfreichsten sind:
- Operator =
- Operator[]
- Anfang und Ende des Iterators
- Leer
- Größe der Kapazität
- Suchen und zählen Sie zum Nachschlagen.
- Einfügen und löschen
Die vollständige Liste der Methoden einer ungeordneten Karte ist unten aufgeführt:
Bei():
Diese C++-Methode für ungeordnete Karten kehrt zurück ein Verweis auf den Wert mit dem angegebenen Element als Schlüssel k .
Beginnen():
Es liefert einen Rückgabewert, der ein ist Iterator zeigt zum ersten Eintrag im ungeordneten Kartencontainer.
Ende():
Der ungeordnete Kartencontainer-Bucket gibt eine zurück Iterator zeigt an die Position nach dem letzten Element ().
string int
Eimer():
Es gibt die Bucket-Nummer in der Bucket-Anzahl der Karte zurück, in der sich das Element befindet Schlüssel k ist plaziert.
Bucket_count()
Die Gesamtzahl der Buckets der ungeordneten Karte beträgt ausgezählt Verwenden der Bucket-Count-Funktion. Es kann ohne Übergabe von Parametern aufgerufen werden.
Eimergröße
Es gibt jeweils die Elementanzahl der ungeordneten Kartenanzahl an Eimer () .
Python-Initialisierungsliste
Zählen()
Es gibt jeweils die Elementanzahl der ungeordneten Kartenanzahl an Eimer () Die Anzahl der Elemente in einer ungeordneten Karte mit dem angegebenen Schlüsselgleichheitsbereich sollte gezählt werden.
equal_range()
Es gibt die Grenzen eines Bereichs mit allen Elementen des Containers und einem Vergleichsschlüssel zurück k .
Finden()
Gibt einen Iterator für das leere Element an.
Position ()
Es bestimmt, ob der Container des ungeordneten Kartencontainers leer ist.
Löschen()
Elemente im ungeordneten Kartencontainer können mit gelöscht werden löschen() Funktion.
Obwohl die Funktionen zum Anzeigen der internen Bucket-Größe, der Bucket-Anzahl, der verwendeten Hash-Funktion und verschiedener Hash-Richtlinien auch von bereitgestellt werden c++11-Bibliothek , sie sind in der praktischen Anwendung weniger hilfreich. Mit dem Iterator können wir jedes Element in der ungeordneten Karte durchlaufen.
Beispiel:
#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 {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<\' 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 &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <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></\'>
Beispiel:
// 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 &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <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>
\'>