Standard Template Library

knihovna jazyka C++ From Wikipedia, the free encyclopedia

Remove ads

Standard Template Library (STL) je softwarová knihovna jazyka C++, která výrazně ovlivnila mnoho částí standardní knihovny C++. STL poskytuje čtveřici komponent – algoritmy, kontejnery, funkční objekty (objekty, které mohou být volány jako funkce) a iterátory. Knihovna STL by měla být dodávána s každým překladačem jazyka C++.

STL poskytuje soubor základních tříd jazyka C++, jako jsou kontejnery či asociativní pole, které mohou pracovat s libovolnými datovými typy, ať už vestavěnými (int, bool,…) nebo uživatelsky definovanými datovými strukturami za předpokladu, že umožňují jisté základní operace (jako kopírování či přiřazení). STL algoritmy jsou nezávislé na kontejnerech, což značně snižuje složitost knihovny.

Základním mechanismem knihovny STL jsou šablony. Díky tomuto řešení je možné dosáhnout polymorfismu řešeného v rámci kompilace (compile-time polymorfismus). Ten je obvykle efektivnější než tradiční run-time polymorfismus. Moderní kompilátory jsou navíc přizpůsobeny k minimalizaci negativních následků abstrakce plynoucích z masivního použití STL.

STL knihovna byla první vytvořenou knihovnou generických algoritmů a datových struktur C++, která sleduje čtyři základní myšlenky: generické programování, abstrakce (bez ztráty efektivity kódu), přizpůsobení Von Neumannově architektuře a hodnotovou sémantiku.

Remove ads

Obsah knihovny

Kontejnery

STL obsahuje sekvenční kontejnery, asociativní kontejnery a kontejnerové adaptéry. Standardní sekvenční kontejnery zahrnují vektor (vector), obousměrnou frontu (deque) a seznam (list). Standardní asociativní kontejnery jsou set, multiset, bitset, map a multimap. Kontejnerové adaptéry představují třídy queue, priority_queue, a stack. Kontejnerové adaptéry nepředstavují doslova třídy kontejnerů, jde pouze o třídy, které poskytují specifické rozhraní a funkčně spoléhají na některý z kontejnerů.

Další informace Kontejner, Popis ...

Iterátory

STL implementuje pět různých typů iterátorů. Jsou to vstupní iterátory, výstupní iterátory, dopředné iterátory, obousměrné iterátory a iterátory s libovolným přístupem (random-access iterátory).

Iterátory jsou důležitým nástrojem umožňujícím obecnost knihovny STL. Například algoritmus pro obrácení sekvence prvků může být implementován použitím obousměrných iterátorů a následně může být stejná implementace využita s použitím listu, vectoru či deque. Uživatelsky vytvořené kontajnery musí pouze poskytnout iterátor, který implementuje rozhraní jednoho z pěti standardních iterátorů a následně všechny algoritmy z STL mohou být na kontajner použity.

Algoritmy

V knihovně STL je zahrnuto velké množství algoritmů pro provádění operací jako hledání či třídění.

Funktory

STL inkluduje třídy, které přetěžují operátory (operátor ()). Třídy s touto schopností se nazývají funkční objekty nebo funktory. Jsou užitečné především pro získání a uchování stavové informace ve funkci, jenž je poslána nějaké další funkci. Jako funkční objekt může být použit i klasický pointer na funkci.

Remove ads

Implementace

  • Originální STL implementace – Stepanov and Lee. 1994, Hewlett-Packard. Není nadále udržováno.
  • SGI STL, založeno na implementaci Stepanov & Lee. 1997, Silicon Graphics. Není nadále udržováno.
  • libstdc++ od gnu (dříve část libg++)
  • libc++ od LLVM
  • STLPort, založen na SGI STL
  • Rogue Wave standard library (HP, SGI, SunSoft, Siemens-Nixdorf)
  • Dinkum STL library by P.J. Plauger
  • Apache C++ Standard Library
Remove ads

Reference

Externí odkazy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads