<functional>
Definuje funkce standardní knihovny jazyka C++, které pomáhají vytvářet objekty funkcí, označované také jako functory a jejich pořadače. 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.
Požadavky
Header:<functional>
Namespace: std
Poznámky
Algoritmy vyžadují dva typy objektů funkcí: unární a binární. Jednočlenné objekty funkce vyžadují jeden argument a binární objekty funkce vyžadují dva argumenty. Objekt funkce a ukazatele funkce lze předat jako predikát algoritmu, ale objekty funkcí jsou také přizpůsobitelné a zvýšit rozsah, flexibilitu a efektivitu standardní knihovny jazyka C++. 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. Funkce záhlaví <> obsahuje také adaptéry členské funkce, které umožňují volat č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. Objekty funkcí a jejich adaptéry umožňují standardní knihovně C++ upgradovat existující aplikace a pomoct integrovat knihovnu do programovacího prostředí C++.
Implementace objektů funkce v <funkčních> objektech zahrnuje transparentní operátory functory, které jsou specializacemi standardních objektů funkce a nemají žádné parametry šablony, a provádět dokonalé předávání argumentů funkce a perfektní vrácení výsledku. 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 potom použít funktory transparentního operátoru jako argumenty funkce. Pokud například typ MyType implementuje operator<
, můžete místo explicitního zadání typu sort(my_collection.begin(), my_collection.end(), less<MyType>())
volat sort(my_collection.begin(), my_collection.end(), less<>())
.
V C++11, C++14 a C++17 jsou přidány následující funkce:
Podpis volání je název návratového typu následovaného závorkou oddělený čárkami se seznamem nulových nebo více typů argumentů.
Volatelný typ je ukazatel na funkci, ukazatel na členovou funkci, ukazatel na data člena nebo typ třídy, jehož objekty se mohou objevit okamžitě nalevo od operátoru volání funkce.
Volatelný objekt je objekt volatelného typu.
Typ obálky volání je typ, který obsahuje volatelný objekt a podporuje operaci volání, která předá tento objekt.
Obálka volání je objekt typu obálky volání.
Cílový objekt je volatelný objekt uchovávaný objektem obálky volání.
Pseudofunkcí INVOKE(f, t1, t2, ..., tN)
se rozumí jedna z následujících možností:
(t1.*f)(t2, ..., tN)
je-lif
ukazatel na členovou funkci třídyT
at1
je objekt typuT
nebo odkaz na objekt typuT
nebo odkaz na objekt typu odvozeného zT
.((*t1).*f)(t2, ..., tN)
je-lif
ukazatel na členovou funkci třídyT
at1
není jedním z typů popsaných v předchozí položce.t1.*f
když N == 1 af
je ukazatelem na členová data třídyT
at1
je objekt typuT
nebo odkaz na objekt typuT
nebo odkaz na objekt typu odvozeného zT
.(*t1).*f
když N == 1 af
je ukazatel na členová data třídyT
at1
není jedním z typů popsaných v předchozí položce.f(t1, t2, ..., tN)
ve všech ostatních případech.
Pseudofunkce 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 členu 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, jeresult_type
synonymem návratového typuT
.Pokud je
T
ukazatel na členskou funkci, jeresult_type
synonymem návratového typuT
.Pokud je
T
typ třídy, která obsahuje typ členuresult_type
, pak jeresult_type
synonymem proT::result_type
.Jinak neexistuje žádný člen
result_type
.
Každá obálka volání má konstruktor přesunutí a konstruktor kopírování. Obálka jednoduchého volání je obálka volání , která má 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 volání přesměrování je obálka volání, kterou lze volat pomocí libovolného seznamu argumentů a který doručí argumenty zabalenému volatelnému objektu jako odkazy. Všechny argumenty r-hodnot jsou dodávány jako odkazy r-hodnot a argumenty l-hodnot jsou dodávány jako odkazy l-hodnot.
Členové
Třídy
Název | Popis |
---|---|
bad_function_call | Třída, která popisuje výjimku vyvolanou k označení, že volání operator() objektu funkce selhalo, protože objekt byl prázdný. |
binary_negate | Šablona třídy poskytující členovou funkci, která neguje návratovou hodnotu zadané binární funkce. (Zastaralé v jazyce C++17.) |
binder1st | Šablona třídy poskytující konstruktor, který převádí objekt binární funkce na objekt unární funkce vazbou prvního argumentu binární funkce na zadanou hodnotu. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
binder2nd | Šablona třídy poskytující konstruktor, který převede objekt binární funkce na objekt unární funkce vazbou druhého argumentu binární funkce na zadanou hodnotu. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
boyer_moore_horspool_searcher | |
boyer_moore_searcher | |
const_mem_fun_ref_t | Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako objekt jednočlenné funkce při inicializaci s argumentem reference. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
const_mem_fun_t | Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako objekt jednočlenné funkce při inicializaci s argumentem ukazatele. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
const_mem_fun1_ref_t | Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako objekt binární funkce při inicializaci s argumentem reference. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
const_mem_fun1_t | Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako objekt binární funkce při inicializaci s argumentem ukazatele. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
default_searcher | |
funkce | Třída, která obaluje volatelný objekt. |
hašé | Třída, která vypočítá kód hash 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 non_const , která umožňuje členské funkci, která při inicializaci pomocí argumentu odkazu nepřijímá žádné argumenty, které by se měly volat jako objekt unární funkce.(Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
mem_fun_t | Třída adaptéru non_const , která umožňuje členské funkci, která při inicializaci pomocí argumentu ukazatele nepřijímá žádné argumenty, které by se měly volat jako objekt unární funkce.(Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
mem_fun1_ref_t | Třída adaptéru non_const , která umožňuje členské funkci, která při inicializaci pomocí argumentu odkazu přebírá jeden argument, který má být volán jako objekt binární funkce.(Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
mem_fun1_t | Třída adaptéru non_const , která umožňuje členské funkci, která při inicializaci s argumentem ukazatele přebírá jeden argument, který má být volán jako objekt binární funkce.(Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
pointer_to_binary_function | Převede ukazatel na binární funkci na přizpůsobitelnou binární funkci. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
pointer_to_unary_function | Převede ukazatel na jednočlennou funkci na přizpůsobitelnou jednočlennou funkci. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
reference_wrapper | Třída, která obaluje referenci. |
unary_negate | Šablona třídy poskytující členovou funkci, která neguje návratovou hodnotu zadané unární funkce. (Zastaralé v jazyce C++17.) |
Funkce
Název | Popis |
---|---|
vázat | Naváže argumenty na volatelný objekt. |
bind1st | Pomocná funkce šablony, která vytvoří adaptér pro převedení objektu binární funkce na objekt jednočlenné funkce pomocí vazby prvního argumentu binární funkce na zadanou hodnotu. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
bind2nd | Pomocná funkce šablony, která vytvoří adaptér pro převedení objektu binární funkce na objekt jednočlenné funkce pomocí vazby druhého argumentu binární funkce na zadanou hodnotu. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
bit_and | Vrátí bitovou hodnotu AND (binární operator& ) dvou parametrů. |
bit_not | Vrátí bitový doplněk (operator~ ) parametru.(Přidáno v C++14.) |
bit_or | Vrátí bitovou hodnotu OR (operator| ) dvou parametrů. |
bit_xor | Vrátí bitovou hodnotu XOR (operator^ ) dvou parametrů. |
cref | Z argumentu vytvoří konstantní reference_wrapper . |
vyvolat | |
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ů. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
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 jednočlenného predikátu. (Zastaralé v jazyce C++17.) |
not2 | Vrací doplněk binárního predikátu. (Zastaralé v jazyce C++17.) |
not_fn | Vrátí doplněk výsledku objektu funkce. (Přidáno v C++17.) |
ptr_fun | Pomocná funkce šablony použitá k převedení ukazatelů na jednočlenné a binární funkce do jednočlenných a binárních přizpůsobitelných funkcí. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
ref | Vytvoří reference_wrapper z argumentu. |
vyměnit | Prohodí dva function objekty. |
Struktury
Název | Popis |
---|---|
binary_function | Prázdná základní třída definující typy, které mohou být zděděny odvozenou třídou obsahující objekt binární funkce. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
dělí | 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 jiné hodnotě 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 jiné hodnotě 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 odčítání na prvcích zadaného typu hodnoty. |
modul | Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace numerického zbytku (modulus) na prvcích zadaného typu hodnoty. |
násobí | Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace násobení na prvcích zadaného typu hodnoty. |
negovat | 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 sčítání 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í objekt jednočlenné funkce. (Zastaralé v jazyce C++11, odebráno v jazyce C++17.) |
Objekty
Název | Popis |
---|---|
_1.._M | Zástupné symboly pro nahraditelné argumenty |
Operátory
Název | Popis |
---|---|
operator== | Zakáže porovnávání rovnosti volatelných objektů. |
operator!= | Zakáže porovnávání nerovnosti volatelných objektů. |
Viz také
Referenční informace k souborům hlaviček
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace