|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
C++ Funktory neboli funkční objektyV tomto článku je vysvětlena problematika funktorů v C++. Je tedy ukázáno, co se pojmem funktor rozumí. Dále jsou zmíněny koncepty funktorů, předdefinované funktory a přizpůsobivé, neboli adaptabilní funktory.
ÚvodPoužíváte-li při programování algoritmy, které nabízí knihovna STL, jistě jste zjistili, že mnoho těchto algoritmů používá tzv. funkční objekty, jinak řečeno funktory. Pokud nevíte, co to je, nebo jak se funktory používají, pak je článek určen právě pro Vás.
Funktor (v angl. function object) je objekt, který je možné použít po vzoru funkce s kulatými závorkami. Funktorem je
tedy reference nebo ukazatel na obyčejnou funkci, nebo objekt třídy, která má přetížený operátor (). Nejprve si ukážeme
jednoduchý příklad s použitím
Třetím parametrem algoritmu
Pokud bychom třídu Koncepty funktorůKnihovna STL definuje následující koncepty funktorů:
V souvislosti s touto terminologií se také můžete setkat s pojmy jako predikát a binární predikát. Pojmem predikát se rozumí
unární funkce, vracející hodnotu typu
V knihovně STL jsou již některé funktory definovány - jedná se o funkční objekty, které provádějí banální operace jako je
sčítání, odčítání, dělení apod. Představte si nějaké dva vektory, v nichž máme uložena nějaká celá čísla. Tyto dva vektory budeme
chtít od sebe odečíst. Velmi vhodným řešením bude použít funkci
Posledním parametrem funkce
V následující tabulce uvádím přehled operátorů a jim odpovídající funkční objekty.
Přizpůsobivé funktory
Všechny výše uvedené, předdefinované funktory, jsou přizpůsobivé. Pokud je objekt funktoru přizpůsobivý, znamená to, že obsahuje
položky, které jsou vytvořené pomocí příkazu
Třída ZávěrTo by bylo k funktorům zhruba vše. Doufám, že jste jim porozuměli, neboť některé věci se na první pohled mohou jevit jako poněkud těžkopádné, přitom to není nic složitého a je dobré funktorům rozumět.
Related article
C/C++ (1) - Úvod C/C++ (2) - První program C/C++ (3) - Proměnné a konstanty C/C++ (4) - Funkce printf C/C++ (5) - Funkce printf podruhé C/C++ (6) - Operátory C/C++ (7) - Podmínka C/C++ (8) - Cykly C/C++ (9) - Pole C/C++ (10) - Standardní vstup a výstup C/C++ (11) - Čtení a konverze čísel C/C++ (12) - Preprocesor C/C++ (13) - Preprocesor podruhé C/C++ (14) - Funkce C/C++ (15) - Proměnné C/C++ (16) - Hlavičkové soubory C/C++ (17) - Makefile C/C++ (18) - Makefile podruhé C/C++ (19) - Příkaz switch a bitové operátory C/C++ (20) - Alokace paměti C/C++ (21) - Práce s řetězci C/C++ (22) - Struktury C/C++ (23) - Seznam C/C++ (24) - Soubory C/C++ (25) - Funkce s proměnným počtem parametrů C/C++ (26) - Standardní knihovna C/C++ (27) - Standardní knihovna podruhé C/C++ (28) - Standardní knihovna potřetí C/C++ (29) - Standardní knihovna počtvrté C/C++ (30) - Výčtový typ a nestandardní knihovny C/C++ (31) - Jazyk C++, historie, charakteristika, vztah k C C/C++ (32) - Omezení C++ oproti C C/C++ (33) - Rozdíly mezi C a C++ C/C++ (34) - Drobná vylepšení C++ C/C++ (35) - Reference, funkce C/C++ (36) - Prostory jmen C/C++ (37) - Prostory jmen podruhé C/C++ (38) - Prostory jmen potřetí C/C++ (39) - Objektově orientované programování C/C++ (40) - Dědičnost a virtuální metody GCC vs. CLANG C++ Binární vyhledávací stromy C++ Datová struktura zásobník C++ - Hashování C++ - Vyhledávání v textu - Brute Force algoritmus C++ šablony Grafy a grafové algoritmy I Grafy a grafové algoritmy II C++ výjimky Grafy a grafové algoritmy III. C++ a garbage collector Previous Show category (serial) Next
|
Szukanie oprogramowania
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |