Czym są kontenery STL w C++

Czym Sa Kontenery Stl W C



W C++, STL (standardowa biblioteka szablonów), pojemniki są obiektami służącymi do przechowywania kolekcji innych obiektów. Działają podobnie do szablonów klas i obsługują dużą liczbę typów elementów oraz zapewniają funkcje członkowskie umożliwiające dostęp do ich elementów bezpośrednio lub za pośrednictwem iteratorów.

Typy kontenerów C++ STL

W C++ istnieją trzy typy STL pojemniki , które są wymienione poniżej:







1: Kontenery sekwencyjne

W języku C++ kontenery sekwencyjne umożliwiają nam przechowywanie elementów, które można sekwencyjnie pobierać. Te pojemniki są zakodowane jako tablice lub połączone listy struktur danych. Poniżej podano niektóre typy kontenerów sekwencyjnych.



  • Wektor: Jest to tablica o dynamicznych rozmiarach, która jest przechowywana w pamięci w sposób ciągły.
  • O czym: Reprezentuje dwustronną kolejkę, która obsługuje operacje zarówno wstawiania, jak i usuwania.
  • Szyk: Jest to statyczna tablica przydzielana podczas kompilacji, przy zachowaniu stałego rozmiaru.
  • Lista: Jest to podwójnie połączona lista, która wykonuje szybkie wstawianie i usuwanie elementów w dowolnym miejscu na liście.
  • Lista do przodu: Jest to lista pojedynczo połączona, podobnie jak lista, ale można ją przeglądać tylko w jednym kierunku.

Przykład



W tym przykładzie użyjemy klasa wektorowa pokazać, jak A sekwencyjny pojemnik działa.





#include
#uwzględnij
używając przestrzeni nazw std;
int główny ( ) {
// zainicjować wektor typu int typ
wektor < int > liczby = { 10 , 2 , 16 , 70 , 5 } ;
// wydrukuj wektor
cout << „Liczby to:” ;
Do ( automatyczny & ja: liczby )
{
cout << I << ', ' ;
}
powrót 0 ;
}

Powyższy kod demonstruje użycie sekwencyjny pojemniki w formacie wektorowym, co pozwala na przechowywanie tablic całkowitych. Program inicjalizuje wektor typu integer, przypisuje mu wartości i drukuje je za pomocą pętli. Ten przykład pokazuje, jak łatwo jest przechowywać i uzyskiwać dostęp do danych w języku C++ przy użyciu pojemnik sekwencyjny .



2: Pojemniki asocjacyjne

Kontenery asocjacyjne pozwalają nam przechowywać elementy w określonej kolejności określonej przez operatora porównania. w odróżnieniu pojemniki sekwencyjne , kolejność elementów w pojemniki asocjacyjne jest utrzymywany za pomocą kluczy, które umożliwiają użytkownikom organizowanie i dostęp do elementów. Kiedy element jest wstawiany do pojemnik asocjacyjny , jest automatycznie sortowany we właściwej pozycji na podstawie klucza. Te typy kontenerów są implementowane wewnętrznie, podobnie jak struktury danych drzewa binarnego.

The asocjacyjny pojemniki są klasyfikowane jako:

  • Mapa: zbiór par klucz-wartość, które zostały posortowane przy użyciu unikalnych kluczy
  • Multimapa: zbiór par klucz-wartość, które zostały posortowane przy użyciu kluczy
  • Ustawić: Unikalne klucze zebrane i ułożone według kluczy.
  • Wiele zestawów: zbiór kluczy, które zostały posortowane przy użyciu kluczy

Przykład

Aby zilustrować, w jaki sposób asocjacyjny pojemnik działa, użyjemy ustaw klasę w tym przykładzie.

#include
#włącz
używając przestrzeni nazw std;
int główny ( )
{
// zainicjować ustawić z int typ
ustawić < int > liczby = { 10 , 2 , 16 , 70 , 5 } ;
// wydrukować ustawić
cout << „Liczby to:” ;
Do ( automatyczny & ja: liczby )
{
cout << I << ', ' ;
}
powrót 0 ;
}

Powyższy kod inicjuje zbiór liczb całkowitych w C++, który jest przykładem kontenera asocjacyjnego. Zestaw zapewnia, że ​​elementy są domyślnie sortowane w porządku rosnącym. Następnie kod wypisuje liczby w zestawie za pomocą pętli for.

3: Nieuporządkowane kontenery asocjacyjne

w C++, asocjacyjne nieuporządkowane pojemniki służą do dostarczania nieposortowanych wersji an asocjacyjny pojemnik . Są one implementowane wewnętrznie, podobnie jak struktury danych tablicy skrótów. The asocjacyjny pojemniki są klasyfikowane jako:

  • Nieuporządkowana mapa: zbiór par klucz-wartość, które zostały zaszyfrowane przy użyciu unikalnych kluczy.
  • Nieuporządkowana multimapa: kolekcja par klucz-wartość, która została zaszyfrowana przy użyciu kluczy.
  • Nieuporządkowany zestaw: zbiór unikalnych kluczy, które zostały zaszyfrowane za pomocą kluczy.
  • Nieuporządkowany zestaw wielokrotny: zbiór kluczy, które zostały zaszyfrowane przy użyciu kluczy.

Przykład

Aby zilustrować, jak np asocjacyjne nieuporządkowane pojemnik działa, użyjemy nieuporządkowany zbiór klasa w tym przykładzie.

#include
#include
używając przestrzeni nazw std;
int główny ( )
{
// zainicjuj unordered_set int typ
nieuporządkowany_zestaw < int > liczby = { 10 , 2 , 16 , 70 , 5 } ;
// wydrukować ustawić
cout << „Liczby to:” ;
Do ( automatyczny & ja: liczby )
{
cout << I << ', ' ;
}
powrót 0 ;
}

Wniosek

STL C++ pojemnik jest obiektem posiadacza do przechowywania kolekcji innych obiektów. Działają podobnie do szablonów klas i obsługują dużą liczbę typów elementów. W tym samouczku omówiliśmy najczęściej używane typy kontenerów STL C++, którymi są kontenery sekwencyjne, kontenery asocjacyjne jak również nieuporządkowane kontenery asocjacyjne .