Sdílet prostřednictvím


<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-li f ukazatel na členovou funkci třídy T a t1 je objekt typu T nebo odkaz na objekt typu T nebo odkaz na objekt typu odvozeného z T.

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

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

  • (*t1).*f když N == 1 a f je ukazatel na členová data třídy T a t1 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, 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.

  • Pokud je T 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í. 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