Przejdź do zawartości

C++/Unordered map

Z Wikibooks, biblioteki wolnych podręczników.
< C++

W języku C++ unordered_map jest implementacją mapy, która używa tablicy skrótów do przechowywania par klucz-wartość, zapewniając szybszy czas dostępu niż standardowa implementacja mapy. Oto przykład użycia unordered_map w standardowej bibliotece szablonów C++ (STL):

#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
    unordered_map<string, int> myMap; // create an empty unordered map

    // insert elements
    myMap["apple"] = 5;
    myMap["banana"] = 7;
    myMap["cherry"] = 3;
    myMap["date"] = 9;

    // check if a key exists in the map
    if (myMap.count("banana") > 0) {
        cout << "There are " << myMap["banana"] << " bananas" << endl;
    }

    // iterate over the key-value pairs
    for (const auto& pair : myMap) {
        cout << pair.first << ": " << pair.second << endl;
    }

    // clear the map
    myMap.clear();

    return 0;
}

W tym przykładzie najpierw tworzymy pustą mapę unordered_map, która odwzorowuje ciągi znaków na liczby całkowite o nazwie myMap. Następnie używamy operatora [], aby wstawić pary klucz-wartość do mapy.

Następnie używamy metody count, aby sprawdzić, czy klucz istnieje na mapie, oraz ponownie operatora [], aby pobrać wartość powiązaną z kluczem. Następnie używamy opartej na zakresie pętli for do iteracji par klucz-wartość na mapie oraz metody clear do usunięcia wszystkich par z mapy.

Należy zauważyć, że unordered_map ma podobną funkcjonalność do innych kontenerów C++ STL, takich jak mapa, wektor i zestaw, ale ma inną charakterystykę wydajności. Na przykład unordered_map zapewnia stałą średnią złożoność operacji wstawiania, usuwania i wyszukiwania, ale zużywa więcej pamięci niż implementacja mapy.