logo

Standardowa biblioteka szablonów C++ (STL)

Standardowa biblioteka szablonów (STL) to zestaw klas szablonów C++ zapewniających typowe programistyczne struktury danych i funkcje, takie jak listy, stosy, tablice itp. Jest to biblioteka klas kontenerów, algorytmów i iteratorów. Jest to biblioteka uogólniona, dlatego jej komponenty są sparametryzowane. Znajomość pracy nt klasy szablonowe jest warunkiem wstępnym pracy z STL.

Standardowa biblioteka szablonów C++ (STL) to zbiór algorytmów, struktur danych i innych komponentów, których można użyć do uproszczenia tworzenia programów w C++. STL zapewnia szereg kontenerów, takich jak wektory, listy i mapy, a także algorytmy do wyszukiwania, sortowania i manipulowania danymi.



Jedną z kluczowych zalet STL jest to, że umożliwia pisanie ogólnego kodu wielokrotnego użytku, który można zastosować do różnych typów danych. Oznacza to, że możesz napisać algorytm raz, a następnie używać go z różnymi typami danych, bez konieczności pisania osobnego kodu dla każdego typu.

STL umożliwia także pisanie wydajnego kodu. Wiele algorytmów i struktur danych w STL jest implementowanych przy użyciu zoptymalizowanych algorytmów, co może skutkować krótszym czasem wykonywania w porównaniu z kodem niestandardowym.

lew w porównaniu do tygrysa

Niektóre z kluczowych elementów STL obejmują:

  1. Kontenery: STL zapewnia szereg kontenerów, takich jak wektor, lista, mapa, zestaw i stos, których można używać do przechowywania danych i manipulowania nimi.
  2. Algorytmy: STL zapewnia szereg algorytmów, takich jak sortowanie, znajdowanie i wyszukiwanie binarne, których można używać do manipulowania danymi przechowywanymi w kontenerach.
  3. Iteratory: Iteratory to obiekty umożliwiające poruszanie się po elementach kontenera. STL udostępnia szereg iteratorów, takich jak forward_iterator, bilateral_iterator i random_access_iterator, których można używać z różnymi typami kontenerów.
  4. Obiekty funkcyjne: Obiekty funkcyjne, zwane także funktorami, to obiekty, których można używać jako argumentów funkcji algorytmów. Umożliwiają przekazanie funkcji do algorytmu, umożliwiając dostosowanie jej zachowania.
  5. Adaptery: Adaptery to komponenty modyfikujące zachowanie innych komponentów w STL. Na przykład adaptera Reverse_iterator można użyć do odwrócenia kolejności elementów w kontenerze.

Używając STL, możesz uprościć swój kod, zmniejszyć prawdopodobieństwo błędów i poprawić wydajność swoich programów.



STL składa się z 4 komponentów:

    Algorytmy Kontenery Funktory Iteratory

1. Algorytmy

Algorytm nagłówka definiuje zbiór funkcji specjalnie zaprojektowanych do użycia na szeregu elementów. Działają na pojemniki i zapewniają środki do różnych operacji na zawartości pojemników.

  • Algorytm
    • Sortowanie
    • Badawczy
    • Ważne algorytmy STL
    • Przydatne algorytmy tablicowe
    • Operacje partycji
  • Numeryczny
    • klasa Valarray

2. Kontenery

Kontenery lub klasy kontenerów przechowują obiekty i dane. W sumie istnieje siedem standardowych klas kontenerów pierwszej klasy i trzy klasy adapterów kontenerów oraz tylko siedem plików nagłówkowych zapewniających dostęp do tych kontenerów lub adapterów kontenerów.



  • Kontenery sekwencji: implementuj struktury danych, do których można uzyskać dostęp sekwencyjnie.
    • wektor
    • lista
    • o czym
    • tablice
    • forward_list (wprowadzony w C++ 11)
  • Adaptery kontenerów: zapewniają inny interfejs dla kontenerów sekwencyjnych.
  • Kontenery asocjacyjne: implementuj posortowane struktury danych, które można szybko przeszukiwać (złożoność O(log n)).
  • Nieuporządkowane kontenery asocjacyjne: wdrażaj nieuporządkowane struktury danych, które można szybko przeszukiwać
    • unordered_set (wprowadzony w C++ 11)
    • unordered_multiset (wprowadzony w C++ 11)
    • nieuporządkowana_mapa (Wprowadzone w C++ 11)
    • unordered_multimap (wprowadzone w C++ 11)

Schemat blokowy kontenerów adaptacyjnych i kontenerów nieuporządkowanych Schemat blokowy kontenerów sekwencji i uporządkowanych kontenerów

3. Funktory

STL zawiera klasy, które przeciążają operator wywołania funkcji. Instancje takich klas nazywane są obiektami funkcyjnymi lub funktorami. Funktory umożliwiają dostosowanie działania powiązanej funkcji za pomocą przekazywanych parametrów. Musisz przeczytać – Funktory

4. Iteratory

Jak sama nazwa wskazuje, iteratory służą do pracy na sekwencji wartości. Są główną cechą, która pozwala na ogólność w STL. Musisz przeczytaćIteratory

Biblioteka Użytkowa

Zdefiniowano w nagłówku. Musisz przeczytaćSparuj w C++ STL

Więcej szczegółów znajdziesz w Najnowsze artykuły na temat STL!

Zalety standardowej biblioteki szablonów C++ (STL):

  1. Możliwość ponownego użycia: Jedną z kluczowych zalet STL jest to, że umożliwia pisanie ogólnego kodu wielokrotnego użytku, który można zastosować do różnych typów danych. Może to prowadzić do bardziej wydajnego i łatwiejszego w utrzymaniu kodu.
  2. Wydajne algorytmy: wiele algorytmów i struktur danych w STL jest implementowanych przy użyciu zoptymalizowanych algorytmów, co może skutkować krótszym czasem wykonywania w porównaniu z kodem niestandardowym.
  3. Poprawiona czytelność kodu: STL zapewnia spójny i dobrze udokumentowany sposób pracy z danymi, co może ułatwić zrozumienie i utrzymanie kodu.
  4. Duża społeczność użytkowników: STL jest szeroko stosowany, co oznacza, że ​​istnieje duża społeczność programistów, którzy mogą zapewnić wsparcie i zasoby, takie jak samouczki i fora.

Wady standardowej biblioteki szablonów C++ (STL):

  1. Krzywa uczenia się: STL może być trudny do nauczenia, szczególnie dla początkujących, ze względu na złożoną składnię i wykorzystanie zaawansowanych funkcji, takich jak iteratory i obiekty funkcyjne.
  2. Brak kontroli: Korzystając z STL, musisz polegać na implementacji dostarczonej przez bibliotekę, co może ograniczyć twoją kontrolę nad niektórymi aspektami kodu.
  3. Wydajność: w niektórych przypadkach użycie STL może skutkować wolniejszym czasem wykonywania w porównaniu z kodem niestandardowym, szczególnie w przypadku małych ilości danych.