STL w c ++: wszystko, co musisz wiedzieć



Ten artykuł dostarczy Ci szczegółowej i kompleksowej wiedzy na temat STL w C ++, a także daje wyobrażenie o różnych kontenerach.

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.

Container-STL-in-C++

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:

  1. Zestaw
  2. Multiset
  3. Mapa
  4. 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.