Desáté cvičení – standardní šablonová knihovna
Při práci v jazyce C++ se běžně nevyhneme použití nějakého datového kontejneru, jakým je například spojový seznam. Všechny tyto kontejnery spolu s dalšími funkcemi a třídami tvoří standardní šablonovou knihovnu.
Obsah cvičení
Na dnešní hodině jsme se zabývali STL, neboli standardní šablonovou knihovnou. Každá implementace standardu C++ musí obsahovat STL. Ta je jakousi zásobárnou obecných datových kontejnerů a generických funkcí. My jsme se omezili na stručný popis celkem čtyř tříd – vector
, list
, string
a map
. O každé třídě jsme si pověděli, k čemu slouží, jaké má významné metody a jak se použije v programu.
Doplňte do třídy Řetězec iterátor s náhodným přístupem. To tedy znamená, že iterátor bude implementovat operátor inkrementace (
++
), dekrementace (--
), porovnávání (==
, !=
, <
, <=
, >
a >=
), indexace ([]
) a dereference (*
). V případě nutnosti implementujte též kopírovací konstruktor a přiřazovací operátor.Vytvořte program, který spočte četnost slov na standardním vstupu. Slovem se rozumí posloupnost znaků, číslic a podtržítek, přičemž záleží na velikosti písmen. Interpunkční znaménka vynechejte. Program bude využívat třídu
std::map
a její operátor indexace ([]
). Klíčem bude textový řetězec (buď char*
, nebo std::string
), hodnotou celé číslo. Na konci programu vyište všechny klíče a jejich četnosti. Použijte dopředný iterátor, který vrací klíče lexikograficky seřazené. Nezapomeňte, že operátor indexace ve třídě std::map
přidá nový záznam, pokud klíč neexistuje. Tento fakt může značně zjednodušit program.