Sdílet prostřednictvím


<functional>

Definuje funkce standardní knihovny, které pomáhají při vytváření objektů funkce, také známých jako funktory, a jejich vazačů.Objekt funkce je objekt typu, který definuje operator().Objekt funkce může být ukazatel na funkci, ale častěji tento objekt slouží k ukládání dalších informací, ke kterým lze získat přístup během volání funkce.

#include <functional>

Poznámky

Algoritmy vyžadují dva druhy objektů funkce, unární a binární.Unární objekty funkce vyžadují jeden argument a binární objekty funkce vyžadují dva argumenty.Objekty funkce a ukazatele na funkce lze algoritmu předat jako predikát, ale objekty funkce jsou také přizpůsobivé a zvyšují rozsah, flexibilitu a efektivitu knihovny STL.Například, pokud potřebná hodnota musí být navázána na funkci před předáním algoritmu, nelze ukazatel na funkci použít.Adaptéry funkce převádějí ukazatele na funkci na přizpůsobitelné objekty funkce, které lze navázat na hodnotu.Hlavička <functional> také obsahuje členské adaptéry funkce, které umožňují členské funkce jako přizpůsobitelné objekty funkce.Funkce jsou přizpůsobitelné, pokud obsahují deklarace vnořených typů určující jejich argumenty a návratové typy.Standard jazyka C++ vyžaduje, aby tato přizpůsobivost byla implementována všemi standardními třídami objektů dědícími ze základních tříd unární nebo binární funkce.Objekty funkce a jejich adaptéry knihovně STL umožňují upgrade existujících aplikací a pomáhají integrovat knihovnu STL do programovacího prostředí jazyka C++.

Implementace objektů funkce v jazyce Visual C++ ve <functional> obsahuje transparentní operátory funktorů, což jsou specializované standardní objekty funkce, nepřebírající žádné parametry šablony a vykonávající dokonalé předávání argumentů funkce a dokonalé vrácení výsledku.Tato funkce je součástí návrhu specifikace standardu C++14.Tyto specializace šablony nevyžadují určení typů argumentu při vyvolání aritmetických, relačních, logických a bitových operátorů funktorů.Lze přetěžovat aritmetické, relační, logické a bitové operátory vlastních typů nebo heterogenní kombinace typů a poté použít průhledný operátor funktoru jako argumenty funkce.Například pokud váš typ MyType implementuje operator<, lze volat sort(my_collection.begin(), my_collection.end(), less<>()) namísto explicitního určení typu sort(my_collection.begin(), my_collection.end(), less<MyType>()).

Implementace standardu C++11/C++14.

Následující funkce byly přidány do implementace standardu C++11/C++14 v jazyce Visual C++:

  • Signatura volání je název návratového typu následovaného seznamem žádného nebo více typů argumentů odděleného čárkami a uzavřeného v závorkách.

  • Volatelný typ je ukazatel na funkci, ukazatel na členskou funkci, ukazatel na členská data nebo typ třídy, jejichž objekty se mohou zobrazit bezprostředně nalevo operátoru volání funkce.

  • Volatelný objekt je objekt volatelného typu.

  • Obálka typu volání je typ, který uchovává volatelný objekt a podporuje operaci volání, kterou lze tomuto objektu předat.

  • Obálka volání je objekt typu obálky volání.

  • Cílový objekt je volatelný objekt uchovaný objektem obálky volání.

Jako pseudo funkce INVOKE(f, t1, t2, ..., tN) se rozumí jedna z následujících možností:

  • (t1.*f)(t2, ..., tN) když je f ukazatel na členskou funkci třídy T a t1 je objekt typu T nebo odkaz na objekt typu T nebo odkaz na objekt typu odvozeného z typu T.

  • ((*t1).*f)(t2, ..., tN) když je f ukazatel na členskou funkci třídy T a t1 není jedním z typů uvedených v předchozí položce.

  • t1.*f když N == 1 a f je ukazatel na členská data třídy T a t1 je objekt typu T nebo reference na objekt typu T nebo reference na objekt typu odvozeného z typu T.

  • (*t1).*f když N == 1 a f je ukazatel na datový člen třídy T a t1 není jedním z typů uvedených v předchozí položce.

  • f(t1, t2, ..., tN) ve všech ostatních případech.

Pseudo funkce INVOKE(f, t1, t2, ..., tN, R) znamená INVOKE(f, t1, t2, ..., tN) implicitně převedenou na R.

Pokud má obálka volání slabý typ výsledku, typ jeho členského typu result_type je založen na typu T cílového objektu obálky následujícím způsobem:

  • Pokud je T ukazatel na funkci, je result_type synonymem návratového typu T.

  • Pokud je T ukazatel na členskou funkci, je result_type synonymem návratového typu T.

  • T je typ třídy, která obsahuje typ členu result_type, pak je result_type synonymem pro T::result_type.

  • Jinak neexistuje žádný člen result_type.

Každá obálka volání má konstruktor přesunutí a konstruktor kopírování.Jednoduchá obálka volání je obálka volání obsahující operátor přiřazení a jehož konstruktor kopírování, konstruktor přesunutí a operátor přiřazení nevyvolají výjimky.Obálka předání volání je obálka volání, kterou lze volat pomocí libovolného seznamu argumentů, a který přenáší tyto argumenty zabaleným volatelným objektům jako reference.Všechny argumenty p-hodnot jsou dodávány jako odkazy p-hodnot a argumenty l-hodnot jsou dodávány jako odkazy l-hodnot.

Třídy

bad_function_call

Třída, která popisuje vyvolanou výjimku k označení toho, že volání operator() na objektu funkce se nezdařilo, protože byl tento objekt prázdný.

binary_negate

Třída šablony poskytující členské funkce, které negují návratovou hodnotu zadané binární funkce.

binder1st

Třída šablony poskytující konstruktor, který převádí binární funkce objektu na unární objekt funkce navázáním prvního argumentu binární funkce na zadanou hodnotu.

binder2nd

Třída šablony poskytující konstruktor, který převádí binární funkce objektu na unární objekt funkce navázáním druhého argumentu binární funkce na zadanou hodnotu.

const_mem_fun_ref_t

Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem reference.

const_mem_fun_t

Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem ukazatele.

const_mem_fun1_ref_t

Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem reference.

const_mem_fun1_t

Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem ukazatele.

funkce

Třída, která obaluje volatelný objekt.

hodnota hash

Třída, která vypočítá hashovací kód hodnoty.

is_bind_expression

Třída, která testuje, zda je určitý typ generován voláním metody bind.

is_placeholder

Třída, která testuje, zda je určitý typ zástupným symbolem.

mem_fun_ref_t

Třída adaptéru umožňující volat non_const členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem reference.

mem_fun_t

Třída adaptéru umožňující volat non_const členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem ukazatele.

mem_fun1_ref_t

Třída adaptéru umožňující volat non_const členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem reference.

mem_fun1_t

Třída adaptéru umožňující volat non_const členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem ukazatele.

pointer_to_binary_function

Převede binární ukazatel na funkci na přizpůsobitelnou binární funkci.

pointer_to_unary_function

Převede unární ukazatel na funkci na přizpůsobitelnou unární funkci.

reference_wrapper

Třída, která obaluje referenci.

result_of

Struktura, která uchovává návratový typ zabaleného volatelného objektu.

unary_negate

Třída šablony poskytující členské funkce, které negují návratovou hodnotu zadané unární funkce.

Funkce

bind

Naváže argumenty na volatelný objekt.

bind1st

Pomocná funkce šablony, která vytvoří adaptér pro převedení binárního objektu funkce na unární objekt funkce pomocí vazby prvního argumentu binární funkce na zadanou hodnotu.

bind2nd

Pomocná funkce šablony, která vytvoří adaptér pro převedení binárního objektu funkce na unární objekt funkce pomocí vazby druhého argumentu binární funkce na zadanou hodnotu.

bit_and

Vrací bitové logické AND (binární operátor &) dvou parametrů.

bit_not

Vrací bitový logický doplněk (operátor ~) parametru.

bit_or

Vrací bitové logické OR (operátor |) dvou parametrů.

bit_xor

Vrací bitové logické XOR (operátor ^) dvou parametrů.

cref

Z argumentu vytvoří konstantní reference_wrapper.

mem_fn

Vygeneruje jednoduchou obálku volání.

mem_fun

Pomocné funkce šablony použité k vytvoření adaptérů objektu funkce pro členské funkce při inicializaci pomocí argumentů ukazatelů.

mem_fun_ref

Pomocná funkce šablony použitá k vytvoření adaptérů objektu funkce pro členské funkce při inicializaci pomocí argumentů reference.

not1

Vrací doplněk unárního predikátu.

not2

Vrací doplněk binárního predikátu.

ptr_fun

Pomocná funkce šablony použitá k převedení unárních a binárních ukazatelů na funkce do unárních a binárních přizpůsobitelných funkcí.

ref

Vytvoří reference_wrapper z argumentu.

zaměnit

Prohodí dva objekty function.

Struktury

binary_function

Prázdná základní třída definující typy, které mohou být zděděny odvozenou třídou obsahující binární objekt funkce.

divides

Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace dělení na prvcích zadaného typu hodnoty.

equal_to

Binární predikát, který testuje, zda je hodnota zadaného typu rovna jiné hodnotě tohoto typu.

greater

Binární predikát, který testuje, zda je hodnota zadaného typu větší než jiná hodnota tohoto typu.

greater_equal

Binární predikát, který testuje, zda je hodnota zadaného typu větší nebo rovna než jiná hodnota tohoto typu.

less

Binární predikát, který testuje, zda je hodnota zadaného typu menší než jiná hodnota tohoto typu.

less_equal

Binární predikát, který testuje, zda je hodnota zadaného typu menší nebo rovna než jiná hodnota tohoto typu.

logical_and

Třída poskytující předdefinovaný objekt funkce, který provádí logické operace konjunkce prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku.

logical_not

Třída poskytující předdefinovaný objekt funkce, který provádí logické operace negace prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku.

logical_or

Třída poskytující předdefinovaný objekt funkce, který provádí logické operace disjunkce prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku.

minus

Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace odečítání na prvcích zadaného typu hodnoty.

modulus

Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace zbytek po dělení na prvcích zadaného typu hodnoty.

multiplies

Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace násobení na prvcích zadaného typu hodnoty.

negate

Třída poskytující předdefinovaný objekt funkce, který vrací záporné hodnoty prvku.

not_equal_to

Binární predikát, který testuje, zda není hodnota zadaného typu rovna jiné hodnotě tohoto typu.

plus

Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace součtu na prvcích zadaného typu hodnoty.

unary_function

Prázdná základní třída definující typy, které mohou být zděděny odvozenou třídou obsahující unární objekt funkce.

Objekty

_1.._M

Zástupné symboly pro nahraditelné argumenty.

Operátory

operátor==

Zakáže porovnávání rovnosti volatelných objektů.

operátor!=

Zakáže porovnávání nerovnosti volatelných objektů.

Viz také

Referenční dokumentace

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Další zdroje

<functional> Členové

Standardní knihovna C++ – hlavičkové soubory