Kontenery asocjacyjne w C++ STL

Kontener to struktura danych umożliwiająca przechowywanie w zorganizowany sposób innych obiektów. Natywne biblioteki STL z C++ udostępniają wysokiej jakości kontenery zróźnicowane pod względem swoich właściwości. Kontenery w STL oparte są o szablony klasy (template class).

Kontenery asocjacyjne to specjalny rodzaj kontenerów, których zadaniem jest umożliwienie dostępu do przechowywanych elementów za pomocą kluczy, które na nie wskazują, w przeciwieństwie do kontenerów sekwencyjnych, których zadaniem było umożliwienie dostępu do elementów za pośrednictwem absolutnych lub relatywnych indeksów pozycji.

set

Set jest kontenerem asocjacyjnym, w którym elementy są kluczami dla samych siebie. Można to interpretować tak, że głównym zadaniem kontenera set nie jest mapowanie klucza do elementu, a jedynie tworzenie pewnego zbioru elementów, po których można iterować. Cechą tego kontenera jest to, że w zbiorze nie mogą się znaleść 2 takie same elementy. Dodatkowo, elementy w tym kontenerze są automatycznie sortowane rosnąco.

Cechy kontenera set to:

  • Unikalne elementy zbioru – brak powtórzeń
  • Element jest kluczem dla samego siebie
  • Automatyczne sortowanie elementów

multiset

Kontener multiset ma dokładnie te same cechy, co kontener set, z tą tylko różnicą, że elementy nie muszą być unikalne (mogą się powtarzać).

map

Map jest typowym kontenerem asocjacyjnym, w którym następuje wzajemne skojarzenie elementu z kluczem, który wskazuje na element, stąd, często ten rodzaj kontenera jest nazywany słownikiem. Cechą tego kontenera jest to, że w zbiorze nie mogą się znaleść 2 takie same elementy. Dodatkowo, elementy w tym kontenerze są automatycznie sortowane rosnąco.

Cechy kontenera map to:

  • Unikalne elementy zbioru – brak powtórzeń
  • Każdy element ma klucz, który jednoznacznie wskazuje na ten element
  • Automatyczne sortowanie elementów

multimap

Kontener multimap ma dokładnie te same cechy, co kontener map, z tą tylko różnicą, że elementy nie muszą być unikalne (mogą się powtarzać).

bitset

Bitset jest specjalnym kontenerem, którego zadaniem jest przechowywanie wartości bitowych (0 llub 1) oraz umożliwianie dostępu do tych wartości za pośrednictwem pozycji danego bitu w całym słowie.

Cechy kontenera bitset to:

  • Przechowuje pojedyncze bity
  • Dostęp do poszczególnych bitów po indeksie