logo

map versus ongeordende_map in C++

Voorwaarde : std::kaart , std::unordered_map
Als het om efficiëntie gaat, is er een enorm verschil tussen kaarten en ongeordende kaarten.
We moeten de interne werking van beide kennen om te beslissen welke we gaan gebruiken.

Verschil :



 | map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | of keys(by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) ->Gemiddeld | | O(n) -> Slechtste geval Invoegtijd | log(n) + Herbalanceren | Hetzelfde als zoeken Verwijdertijd | log(n) + Herbalanceren | Hetzelfde als zoeken>

Gebruik std::map wanneer

  • U heeft bestelde gegevens nodig.
  • U zou de gegevens moeten afdrukken/toegang krijgen (in gesorteerde volgorde).
  • Je hebt een voorloper/opvolger van elementen nodig.
  • Bekijk de voordelen van BST ten opzichte van Hash Table e voor meer gevallen.

CPP

iPhone-emoji's op Android






csv-bestand java lezen



// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>bestellen;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing ordered values> >for> (>auto> i = order.begin(); i> >!= order.end(); i++) {> >std::cout << ' : ' ' '; } }>

>

>

Uitvoer

1 : 1 3 : 500 5 : 10 20 : 100>

Gebruik std::unordered_map wanneer

  • U moet een aantal gegevens bijhouden (bijvoorbeeld strings) en er is geen bestelling vereist.
  • U hebt toegang tot één element nodig, d.w.z. geen verplaatsing.

CPP


prime-programma in Java



// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>bestellen;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing unordered values> >for> (>auto> i = order.begin();> >i != order.end(); i++)> >{> >std::cout << ' : ' ' '; } }>

>

hoe groot is deze monitor

>

Uitvoer

1 : 1 20 : 100 3 : 500 5 : 10>

Laten we de verschillen in tabelvorm bekijken -:

kaart ongeordende_kaart
1. kaart is gedefinieerd in #include headerbestand unordered_map is gedefinieerd in #include headerbestand
2. Het wordt uitgevoerd door rood-zwarte boom . Het wordt geïmplementeerd met behulp van een hashtabel.
3. Het is langzaam. Het is snel.
4. Tijdcomplexiteit voor bewerkingen is O(log N) Tijdcomplexiteit voor bewerkingen is O(1)
5. map wordt gebruikt om elementen op te slaan als sleutel-waardeparen, gesorteerd op sleutel. unordered_map wordt gebruikt om elementen op te slaan als sleutel-waardeparen in niet-gesorteerde volgorde.