logo

Kaart in C++ standaardsjabloonbibliotheek (STL)

Kaarten zijn associatieve containers die elementen op een in kaart gebrachte manier opslaan. Elk element heeft een sleutelwaarde en een toegewezen waarde. Geen twee toegewezen waarden kunnen dezelfde sleutelwaarden hebben.

std::map is de klassensjabloon voor kaartcontainers en wordt gedefinieerd in het headerbestand.



Basis std::map Lidfuncties

Enkele basisfuncties geassocieerd met std::map zijn:

  • beginnen() – Retourneert een iterator naar het eerste element op de kaart.
  • einde() – Retourneert een iterator naar het theoretische element dat volgt op het laatste element op de kaart.
  • maat() – Geeft het aantal elementen op de kaart terug.
  • max_grootte() – Retourneert het maximale aantal elementen dat de kaart kan bevatten.
  • leeg() – Geeft terug of de kaart leeg is.
  • paar invoegen(sleutelwaarde, kaartwaarde) – Voegt een nieuw element toe aan de kaart.
  • wissen (iteratorpositie) – Verwijdert het element op de positie die door de iterator wordt aangegeven.
  • wissen(const g) – Verwijdert de sleutelwaarde ‘g’ van de kaart.
  • duidelijk() – Verwijdert alle elementen van de kaart.

Voorbeelden van std::map

In de volgende voorbeelden ziet u hoe u basisbewerkingen op kaartcontainers uitvoert.

nginx

Voorbeeld 1: begin() en end() Functie

C++








// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mp; // Voeg enkele waarden in de kaart in mp['one'] = 1; mp['twee'] = 2; mp['drie'] = 3; // Haal een iterator op die naar het eerste element in de // map mapint>::iterator it = mp.begin(); // Doorloop de kaart en druk de elementen af ​​terwijl (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }>

>

>

Uitvoer

Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>

Complexiteit van de bovenstaande methode:

Tijdcomplexiteit: O(n) waarbij n de grootte van de kaart is.

Hulpruimte: Op)

Voorbeeld 2: size() functie

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>kaart; // Voeg enkele waarden in de kaart in map['one'] = 1; kaart['twee'] = 2; kaart['drie'] = 3; // Druk de grootte van de kaart af<< 'Size of map: ' << map.size() << endl; return 0; }>

>

>

Uitvoer

Size of map: 3>

Complexiteit van de bovenstaande methode:

Tijdcomplexiteit: O(1).

Voorbeeld 3: Implementatiekaart

CPP




// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;> >// insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));> >gquiz1.insert(pair<>int>,>int>>(2, 30));> >gquiz1.insert(pair<>int>,>int>>(3, 60));> >gquiz1.insert(pair<>int>,>int>>(4, 20));> >gquiz1.insert(pair<>int>,>int>>(5, 50));> >gquiz1.insert(pair<>int>,>int>>(6, 50));> >// another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::iterator itr;> >cout <<>' The map gquiz1 is : '>;> >cout <<>' KEY ELEMENT '>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << ' '; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map gquiz2(gquiz1.begin(), gquiz1.end()); // print alle elementen van de kaart gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

CSS-teruglooptekst
>

>

Uitvoer

The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>

Complexiteit van de bovenstaande methode:

Tijdcomplexiteit: O(n log(n)) aangezien n de grootte van de kaart is
Hulpruimte: Op)

Voorbeeld 4: Implementatie van een kaart met gehele getallen

C++




// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>kaart; // Voeg enkele waarden in de kaart in map['one'] = 1; kaart['twee'] = 2; kaart['drie'] = 3; // Druk de waarden in de kaart af<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) { uit<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }>

>

bellen sorteren in algoritme
>

Uitvoer

Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>

Lijst met alle functies van std::map

De volgende tabel bevat alle functies die zijn gedefinieerd in de klasse std::map.

Functie

Definitie

kaart::insert()

Voeg elementen met een bepaalde sleutel in de kaartcontainer in –> O(log n)

kaart:: tellen()

Retourneert het aantal overeenkomsten met het element met sleutelwaarde ‘g’ op de kaart. –> O(logboek n)

kaart equal_range()

Retourneert een iterator van paren. Het paar verwijst naar de grenzen van een bereik dat alle elementen in de container omvat die een sleutel hebben die equivalent is aan k.

kaart wissen()

Wordt gebruikt om elementen uit de container te wissen –> O(log n)

kaart rend()

Retourneert een omgekeerde iterator die verwijst naar het theoretische element vlak vóór het eerste sleutel-waardepaar in de kaart (dat wordt beschouwd als het omgekeerde uiteinde ervan).

kaart rbegin()

Retourneert een omgekeerde iterator die naar het laatste element van de kaart verwijst.

kaart zoeken()

Retourneert een iterator naar het element met sleutelwaarde ‘g’ op de kaart, indien gevonden, anders wordt de iterator geretourneerd naar het einde.

breng crbegin() en crend() in kaart

crbegin() retourneert een constante omgekeerde iterator die verwijst naar het laatste element in de kaartcontainer. crend() retourneert een constante omgekeerde iterator die verwijst naar het theoretische element vóór het eerste element op de kaart.

kaart cbegin() en cend()

cbegin() retourneert een constante iterator die verwijst naar het eerste element in de kaartcontainer. cend() retourneert een constante iterator die verwijst naar het theoretische element dat volgt op het laatste element in de multimap.

kaart emplace()

Voegt de sleutel en het bijbehorende element in de kaartcontainer in.

kaart max_size()

Retourneert het maximale aantal elementen dat een kaartcontainer kan bevatten -> O(1)

kaart bovengrens()

Retourneert een iterator naar het eerste element dat equivalent is aan de toegewezen waarde met sleutelwaarde ‘g’ of die zeker achter het element met sleutelwaarde ‘g’ in de kaart gaat

Romeinse cijfers 1 100
kaartoperator=

Wijst de inhoud van een container toe aan een andere container, waarbij de huidige inhoud wordt vervangen.

kaart lower_bound()

Retourneert een iterator voor het eerste element dat equivalent is aan de toegewezen waarde met sleutelwaarde ‘g’ of zal zeker niet vóór het element met sleutelwaarde ‘g’ in de kaart komen -> O(log n)

kaart emplace_hint()

Voegt de sleutel en het bijbehorende element in de kaartcontainer in met een bepaalde hint.

kaart waarde_comp()

Retourneert het object dat bepaalt hoe de elementen op de kaart worden geordend (standaard ‘<‘).

kaart key_comp()

Retourneert het object dat bepaalt hoe de elementen op de kaart worden geordend (standaard ‘<‘).

kaart grootte()

Retourneert het aantal elementen op de kaart.

kaart::leeg()

Geeft terug of de kaart leeg is

kaart::begin() en end()

begin() retourneert een iterator naar het eerste element op de kaart. end() retourneert een iterator naar het theoretische element dat volgt op het laatste element op de kaart

kaart::operator[]

Deze operator wordt gebruikt om te verwijzen naar het element dat aanwezig is op de positie die binnen de operator is opgegeven.

kaart::clear()

Verwijdert alle elementen van de kaart.

kaart::at() en kaart::swap()

De functie at() wordt gebruikt om de verwijzing terug te geven naar het element dat is gekoppeld aan de sleutel k. De functie swap() wordt gebruikt om de inhoud van twee kaarten uit te wisselen, maar de kaarten moeten van hetzelfde type zijn, hoewel de afmetingen kunnen verschillen.