Biblioteka szablonów standardowych (STL) to zestaw klas szablonów C ++ zapewniających typowe struktury danych programowania i funkcje, takie jak listy, stosy, tablice itp. W tym artykule STL w C ++ omówimy następujące wskaźniki:
Przechodząc do tego artykułu o STL w C ++
Szablony C ++
C ++ udostępnia nam funkcję szablonów, która umożliwia funkcjom i klasom działanie z typami ogólnymi. Pozwala to na wielokrotne użycie funkcji lub klasy i pozwala na pracę z wieloma różnymi typami danych bez przepisywania dla każdego z nich.
Przechodząc do tego artykułu o STL w C ++
Funkcje ogólne i STL
Podczas programowania niejednokrotnie zachodzi potrzeba tworzenia funkcji wykonujących te same operacje, ale pracujących z różnymi typami danych. Aby rozwiązać ten problem, C ++ udostępnia funkcję tworzenia pojedynczej funkcji ogólnej zamiast wielu funkcji, które mogą współpracować z różnymi typami danych przy użyciu parametru szablonu. Zbiór tych klas i funkcji genrycznych nosi nazwę Standard Template Library (STL)
Składniki STL, które są teraz częścią standardowej biblioteki C ++ są zdefiniowane w przestrzeni nazw std. Dlatego musimy użyć dyrektywy using namespace, aby zaimportować je do naszego programu.
Składnia:
Korzystanie z przestrzeni nazw std
STL składa się z trzech komponentów
Pojemniki
Algorytmy
Iteratory
Te trzy komponenty współpracują ze sobą w synergii, zapewniając wsparcie dla różnych rozwiązań programistycznych. Algorytm wykorzystuje iteratory do wykonywania operacji przechowywanych w kontenerach.
Kontener to obiekt, który przechowuje dane w pamięci w zorganizowany sposób. Kontenery w STL są implementowane przez klasy szablonów i dlatego można je łatwo modyfikować i dostosowywać do przechowywania różnych typów danych.
Procedura używana do przetwarzania danych zawartych w kontenerach jest zdefiniowana jako algorytm. STL zawiera wiele różnych rodzajów algorytmów zapewniających obsługę zadań, takich jak inicjowanie, wyszukiwanie, kopiowanie, sortowanie i scalanie, kopiowanie, sortowanie i scalanie. Algorytmy są implementowane przez funkcje szablonów.
Iterator można zdefiniować jako obiekt wskazujący na element w kontenerze. Iteratory mogą służyć do poruszania się po zawartości kontenerów. Iteratory są obsługiwane tak samo jak wskaźniki. Możemy je zwiększać lub zmniejszać. Iteratory łączą algorytm z kontenerami i odgrywają kluczową rolę w manipulowaniu danymi przechowywanymi w kontenerach.
Przechodząc do tego artykułu o STL w C ++
Pojemniki
STL definiuje dziesięć kontenerów, które są zgrupowane w trzech kategoriach.
Pojemniki | Opis | Plik nagłówkowy | Iterator |
Wektor | Można go zdefiniować jako tablicę dynamiczną. Umożliwia bezpośredni dostęp do dowolnego elementu. | Losowy dostęp | |
Lista | Jest to dwukierunkowa lista liniowa. Umożliwia wstawianie i usuwanie w dowolnym miejscu | Dwukierunkowy | |
i | Jest to kolejka dwustronna. Umożliwia wstawianie i usuwanie na obu końcach. Umożliwia bezpośredni dostęp do dowolnego elementu. | Losowy dostęp | |
zestaw | Jest to powiązany kontener do przechowywania unikalnych zestawów. Umożliwia szybkie wyszukiwanie. dziesiętne na dwójkowe w Pythonie | Dwukierunkowy | |
multiset | Jest to powiązany kontener do przechowywania nieunikalnych zestawów. | Dwukierunkowy | |
mapa | Jest to skojarzony kontener do przechowywania unikalnych par klucz / wartość. Każdy klucz jest powiązany tylko z jedną wartością. | Dwukierunkowy | |
multimap | Jest to skojarzony kontener do przechowywania klucza / wartości, w którym jeden klucz może być powiązany z więcej niż jedną wartością (mapowanie jeden do wielu). Umożliwia wyszukiwanie oparte na kluczach. | Dwukierunkowy | |
stos | Standardowy stos następuje po last-in-first-out (LIFO) | Brak iteratora | |
kolejka | Standardowa kolejka podąża za pierwszym w pierwszym na wyjściu (FIFO) | Brak iteratora | |
kolejka priorytetowa | Pierwszy wysunięty element jest zawsze elementem o najwyższym priorytecie | Brak iteratora |
Kontenery sekwencji
Kontenery sekwencji przechowują elementy w kolejności liniowej. Wszystkie elementy są ze sobą powiązane poprzez ich położenie wzdłuż linii. Umożliwiają wstawianie elementu i wszystkie obsługują na nich kilka operacji.
STL udostępnia trzy typy elementów sekwencji:
- Wektor
- Lista
- i
Kontenery asocjacyjne:
Zostały zaprojektowane w taki sposób, że mogą wspierać bezpośredni dostęp do elementów za pomocą kluczy. Nie są sekwencyjne. Istnieją cztery typy plików
asocjacyjne kontenery:
- Zestaw
- Multiset
- Mapa
- Multimap
Wszystkie powyższe kontenery przechowują dane w strukturze zwanej drzewem, co jest bardzo łatwe
wyszukiwanie, usuwanie i wstawianie w przeciwieństwie do sekwencyjnego. Zestaw kontenerów lub zestaw multiset może przechowywać różne elementy i zapewniać operacje służące do manipulowania nimi przy użyciu wartości jako kluczy.
A map lub Multimap są używane do przechowywania elementów w parze, jeden zwany kluczem, a drugi
zwana wartością.
Pochodne pojemniki:
STL udostępnia trzy pochodne kontenery, a mianowicie stos, kolejkę i priorytetową kolejkę. Są one również znane jako adaptery kontenerów.
Istnieją trzy typy kontenerów pochodnych:
1. stos
2. kolejka
3.Priority_quue
Stosy, kolejki i kolejki priorytetowe można łatwo tworzyć z różnych kontenerów sekwencji. Pochodne kontenery nie obsługują iteratorów i dlatego nie możemy ich używać do manipulacji danymi. Jednak obsługują dwie funkcje składowe pop () i push () do implementowania operacji usuwania i wstawiania.
Przechodząc do tego artykułu o STL w C ++
Algorytmy
Algorytmy to funkcje, których można ogólnie używać w różnych kontenerach do przetwarzania ich zawartości. Chociaż każdy kontener udostępnia funkcje dla swoich podstawowych operacji, STL zapewnia ponad sześćdziesiąt standardowych algorytmów do obsługi bardziej rozszerzonych lub złożonych operacji. Standardowe algorytmy pozwalają również na jednoczesną pracę z dwoma różnymi typami kontenerów.
Algorytmy STL wzmacniają filozofię ponownego wykorzystania. Korzystając z tych algorytmów, programiści mogą zaoszczędzić dużo czasu i wysiłku. Aby mieć dostęp do algorytmów STL, musimy uwzględnić w naszym programie.
Algorytm STL, ze względu na charakter wykonywanych przez siebie operacji, można podzielić na:
Algorytmy niemutujące
Algorytmy mutujące
Algorytmy sortowania
Ustaw algorytmy
Algorytm relacyjny
Przechodząc do tego artykułu o STL w C ++
Iteratory:
Iteratory działają jak wskaźniki i służą do uzyskiwania dostępu do elementów kontenera. Używamy iteratorów do poruszania się po zawartości kontenerów. Iteratory są obsługiwane tak samo jak wskaźniki. Możemy je zwiększać lub zmniejszać zgodnie z naszymi wymaganiami. Iteratory łączą kontenery z algorytmami i odgrywają istotną rolę w manipulowaniu danymi przechowywanymi w kontenerach. Często są używane do przechodzenia z jednego elementu do drugiego, proces ten nazywa się iteracją przez kontener.
Istnieje pięć typów iteratorów:
1. wejście
2. wyjście
3. do przodu
4. dwukierunkowy
5. losowo
Iterator | Metoda dostępu | Kierunek ruchu | Możliwości I / O | Uwaga |
Wejście | Liniowy | Tylko do przodu | Tylko czytać | Nie można zapisać |
Wynik | Liniowy | Tylko do przodu | Tylko pisz | Nie można zapisać |
Naprzód | Liniowy | Tylko do przodu | Odczyt / zapis | Można go uratować |
Dwukierunkowy | Liniowy | Do przodu i do tyłu | Odczyt / zapis | Można go uratować |
Losowy | Losowy | Do przodu i do tyłu | Odczyt / zapis Talend open studio do samouczka integracji danych | Można go uratować |
Różne typy iteratorów muszą być używane z różnymi typami kontenerów, takimi jak tylko
kontenery sekwencyjne i asocjacyjne mogą przechodzić przez iteratory. Każdy typ iteratorów jest używany do wykonywania określonych funkcji. Iteratory wejścia i wyjścia obsługują najmniej funkcji. Mogą być używane tylko do przejścia w kontenerze. Iteratory do przodu obsługują wszystkie operacje iteratorów wejściowych i wyjściowych, a także zachowują swoją pozycję w kontenerze. Dwukierunkowy iterator, wspierając wszystkie operacje iteratorów do przodu, zapewnia możliwość poruszania się w kierunku wstecznym w kontenerze.
W ten sposób dotarliśmy do końca artykułu „STL w C ++”. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a skontaktujemy się z Tobą tak szybko, jak to możliwe.