Standardowe biblioteki C ++

Standardowa biblioteka szablonów (STL) lub standardowa biblioteka szablonów wpłynęła na architekturę C ++ i stała się rdzeniem języka. STL to zestaw uniwersalnych komponentów i zaawansowanych wysokowydajnych algorytmów zarządzania danymi. Dzięki temu programatorowi bibliotek C ++ zaawansowane osiągnięcia w dziedzinie struktur danych i efektywnych algorytmów stały się dostępne bez potrzeby szczegółowego zrozumienia ich struktury i pracy.

C ++ przechodzi na nowy poziom

W przypadku programatora, STL jest reprezentowany przez zestaw klas zbiorów przeznaczonych do określonych celów i przez zestaw algorytmów, które mogą z nimi pracować. Ze względu na fakt, że wszystkie elementy biblioteki są szablonami, mogą być używane dla dowolnego typu elementu. Ponadto biblioteka pozwala tworzyć własne klasy i algorytmy, które mogą współpracować z już istniejącymi.


Takie podejście do organizacji pracy z danymi i algorytmami wyświetla C ++ na jakościowo różnym poziomie abstrakcji. Teraz programista nie jest obciążony tworzeniem dynamicznych tablic, list, drzew, skrótów. Może też zapomnieć o programowaniu różnych algorytmów wyszukiwania i omijania. Wraz z nadejściem programatora STL wystarczy określić odpowiedni kontener i wykorzystać jego funkcje członkowskie i algorytmy przetwarzania. Komponenty STL mogą pracować z dowolnymi typami danych. Osiąga się to przez fakt, że wszystkie składniki biblioteki C ++ są szablonami, które umożliwiają korzystanie z dowolnych typów, jeśli są w stanie wykonać wymagane operacje. To znaczy pojemniki i algorytmyuogólnione w odniesieniu do typów. Ta koncepcja nazywa się programowaniem generycznym.


Pomimo zmian, które zostały wprowadzone w C ++ z nadejściem STL, nie zapomnij, że było to skuteczne i wszechstronne narzędzie do programowania, a jego wygląd, a wszystkie jego funkcje C ++ zachowane (np bibliotekę system lub ctime) oraz z pojawieniem się tylko STL pomnożonej.

Komponenty biblioteki

Bloki biblioteki są dobrze zbudowanymi komponentami i dobrze funkcjonującymi interakcjami. Głównymi takimi blokami są kontenery, iteratory i algorytmy. Dzięki ++ biblioteka STL zapewnia niesamowity poziom elastyczności programowania, ale jest trudna do zrozumienia i wymagająca przed rozwojem.

Pojemniki

W standardowej bibliotece C ++ kontenery służą do zarządzania kolekcjami i składają się z obiektów określonego typu. Wszystkie pojemniki mają szereg zalet i wad. Dlatego różne pojemniki są zaprojektowane tak, aby odpowiadały różnym wymaganiom stawianym przez programy. Kontenery mogą być tablicami lub połączonymi listami. Można je również zaimplementować za pomocą specjalnego klucza dla każdej pozycji. Istnieją 3 rodzaje pojemników:
  • Kolejne pojemniki. Są to uporządkowane kolekcje. Każda pozycja ma swoją własną pozycję, która zależy od czasu wstawienia i nie zależy od wartości elementu. Sekwencyjne pojemniki 5 odmian: tablica, wektor, deque, lista, lista do przodu.
  • Pojemniki asocjacyjne. Jest to również uporządkowany zbiór przedmiotów, ale ich pozycja zależy od wartościsam element lub klucz, jeśli elementy kolekcji są parą klucz-wartość. Istnieją 4 standardowe pojemniki asocjacyjne: zbiór, multiset, mapa, multimapa.
  • Nieuporządkowane pojemniki asocjacyjne. W takim przypadku kolejność elementów w kolekcji nie ma wpływu ani na wartość, ani na czas wstawienia elementu do kolekcji. Jeśli włożysz do tej kolekcji n-tą liczbę przedmiotów, ich kolejność będzie nieprzewidywalna. Co więcej, z biegiem czasu może się zmieniać. Nieuporządkowane kontenery to: zbiór nieuporządkowany, nieumeblowany multiset, mapa nieuporządkowana, nieuporządkowany multimapa.
  • Iteratory

    Są to mechanizmy używane do ominięcia elementów w zbiorze obiektów. W takim przypadku kolekcje mogą być zarówno kontenerami, jak i ich podzbiorem. Główną zaletą iteratorów jest to, że tworzą minimalny, wystarczający i wszechstronny interfejs dla dowolnego typu kontenera. Na przykład jednym z zadań iteratorów jest przenoszenie elementów kolekcji i nie zależy to od struktury tej kolekcji, która może być dowolna: tablica, drzewo, tablica hash. Wybór elementów działa w ten sam sposób.
    Interfejs samych iteratorów jest podobny do pracy ze wskaźnikami. Na przykład, aby uzyskać iterator następnego elementu, należy wykonać operację "++" i uzyskać wartość elementu, który w chwili wskazania iteratora wskazuje, - operacja "*". Tak więc iterator jest podobny do pewnego rodzaju wskaźnika intelektualnego.

    Algorytmy

    Głównym zadaniem algorytmów jest obsługa elementów kolekcji. Na przykład wyszukaj lub sortuj, modyfikuj lub używaj wartości przedmiotów.Algorytmy są wdrażane kosztem iteratorów. Takie podejście pozwala utworzyć algorytm tylko raz i rozszerzyć jego działanie do dowolnych kontenerów dzięki iteratorom z jednym interfejsem. Mechanizm funkcji pomocniczych powodowany przez algorytmy opracowywany jest dla niezwykle złożonych zadań. Zapewnia to niezbędną elastyczność do obsługi określonych przypadków. Na przykład programista może poprosić o określone kryterium wyszukiwania. Wraz z pojawieniem się funkcji lambda, pojawiły się możliwości opisywania wszelkich operacji wykonywanych na elementach kontenerów, gdy są one wymieniane. Tak więc biblioteka funkcji C ++ jest bardzo elastyczna.

    W przeciwieństwie do koncepcji STL OWP?

    W bibliotece C ++ dane STL są kontrolowane przez klasy kontenerów, a operacje są konfigurowane za pomocą algorytmów. Okazuje się, że koncepcja biblioteki STL dzieli dane i operacje, co jest sprzeczne z zasadami programowania obiektowego, które wymagają połączenia danych i operacji. Jest to jednak wymówka. Ze względu na interakcję dowolnych algorytmów z dowolnymi kontenerami poprzez iteratory programista może łączyć dowolne dane z dowolnymi operacjami. W ten sposób eliminuje się sprzeczność z OOP i osiąga się zupełnie nowy poziom elastyczności.

    Wniosek

    STL jest nowym lub ulepszonym podejściem do programowania. Początki biblioteki pojawiły się dawno temu. Pierwsze pomysły pochodziły z lat 1992-1994. Po wielu latach rozwoju STL został w pełni zintegrowany ze standardem C ++ 11. Biblioteka ma świetną funkcjonalność i dużą elastyczność, ale z tymtrudne do zrozumienia. Jego dokumentacja obejmuje setki stron internetowych (na przykład dokumentacja na stronie biblioteki Microsoft Visual C ++), a książka zawiera ponad 1000 stron opisu. W tym przypadku biblioteka jest w fazie rozwoju.

    Powiązane publikacje