C++/Unordered set

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

W C++ unordered_set to implementacja zestawu, który używa tablicy skrótów do przechowywania swoich elementów, zapewniając szybszy czas dostępu niż standardowa implementacja zestawu. Oto przykład użycia unordered_set w standardowej bibliotece szablonów C++ (STL):

#include <iostream>
#include <unordered_set>

using namespace std;

int main() {
    unordered_set<int> mySet; // create an empty unordered set

    // insert elements
    mySet.insert(3);
    mySet.insert(5);
    mySet.insert(1);
    mySet.insert(7);
    mySet.insert(9);

    // check if an element exists in the set
    if (mySet.find(5) != mySet.end()) {
        cout << "5 is present in the set" << endl;
    }

    // erase an element
    mySet.erase(7);

    // print the elements
    for (const auto& element : mySet) {
        cout << element << " ";
    }
    cout << endl;

    // clear the set
    mySet.clear();

    return 0;
}

W tym przykładzie najpierw tworzymy pusty nieuporządkowany zbiór liczb całkowitych o nazwie mySet. Następnie używamy metody insert, aby wstawić elementy do zestawu. Zauważ, że elementy nie są przechowywane w określonej kolejności, ponieważ jest to zbiór nieuporządkowany.

Następnie używamy metody find, aby sprawdzić, czy element jest obecny w zbiorze, oraz metody wymazywania, aby usunąć element ze zbioru. Następnie używamy pętli for opartej na zakresie, aby wydrukować elementy zestawu, oraz metody clear, aby usunąć wszystkie elementy z zestawu.

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