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 .