<functional>

Definiuje standardowe funkcje biblioteki języka C++, które ułatwiają konstruowanie obiektów funkcji, znanych również jako funktory i ich powiązania. Obiekt funkcji jest obiektem typu, który definiuje operator()element . Obiekt funkcji może być wskaźnikiem funkcji, ale zazwyczaj obiekt jest używany do przechowywania dodatkowych informacji, do których można uzyskać dostęp podczas wywołania funkcji.

Wymagania

Nagłówek:<funkcjonalny>

Przestrzeń nazw: std

Uwagi

Algorytmy wymagają dwóch typów obiektów funkcji: jednoargumentowego i binarnego. Obiekty funkcji jednoargumentowej wymagają jednego argumentu, a obiekty funkcji binarnych wymagają dwóch argumentów. Obiekty funkcji i wskaźniki funkcji można przekazać jako predykat do algorytmu, ale obiekty funkcji można również dostosowywać i zwiększać zakres, elastyczność i wydajność standardowej biblioteki języka C++. Jeśli na przykład wartość musi być powiązana z funkcją przed przekazaniem do algorytmu, nie można użyć wskaźnika funkcji. Adaptery funkcji konwertują wskaźniki funkcji na obiekty funkcji, które mogą być powiązane z wartością. Funkcja nagłówka <> zawiera również adaptery funkcji składowych, które umożliwiają wywoływanie funkcji składowych jako obiekty funkcji z możliwością dostosowania. Funkcje można dostosować, jeśli mają zagnieżdżone deklaracje typów określające ich argument i zwracane typy. Obiekty funkcji i ich adaptery umożliwiają bibliotece standardowej języka C++ uaktualnianie istniejących aplikacji i pomagają zintegrować bibliotekę ze środowiskiem programowania C++.

Implementacja obiektów funkcji w <funkcjonalności> obejmuje przezroczyste funktory operatorów, które są specjalizacjami standardowych obiektów funkcji i nie przyjmują parametrów szablonu, i wykonują doskonałe przekazywanie argumentów funkcji i doskonały zwrot wyniku. Te specjalizacje szablonów nie wymagają określenia typów argumentów podczas wywoływania arytmetycznych, porównania, logicznego i bitowego operatorów functors. Można przeciążyć operatory arytmetyczne, porównania, logiczne lub bitowe dla własnych typów lub dla heterogenicznych kombinacji typów, a następnie użyć przezroczystych operatorów functors jako argumentów funkcji. Jeśli na przykład typ MyType implementuje operator<metodę , można wywołać sort(my_collection.begin(), my_collection.end(), less<>()) metodę zamiast jawnie określić typ sort(my_collection.begin(), my_collection.end(), less<MyType>()).

Następujące funkcje są dodawane w językach C++11, C++14 i C++17:

  • Sygnatura wywołania to nazwa typu zwracanego, po którym następuje rozdzielona przecinkami lista zero lub więcej typów argumentów.

  • Wywoływany typ to wskaźnik do funkcji, wskaźnik do funkcji składowej, wskaźnik do danych składowych lub typ klasy, którego obiekty mogą pojawiać się natychmiast po lewej stronie operatora wywołania funkcji.

  • Obiekt wywoływany jest obiektem typu wywoływanego.

  • Typ otoki wywołań jest typem, który zawiera obiekt wywołujący i obsługuje operację wywołania, która przekazuje do tego obiektu.

  • Otoka wywołań jest obiektem typu otoki wywołań.

  • Obiekt docelowy jest obiektem wywoływanym przechowywanym przez obiekt otoki wywołań.

Pseudo-funkcja INVOKE(f, t1, t2, ..., tN) oznacza jedną z następujących rzeczy:

  • (t1.*f)(t2, ..., tN) gdy f jest wskaźnikiem do funkcji składowej klasy T i t1 jest obiektem typu lub odwołaniem do obiektu typu TT lub odwołania do obiektu typu lub odwołania do obiektu typu pochodzącego z Tklasy .

  • ((*t1).*f)(t2, ..., tN) gdy f jest wskaźnikiem do funkcji składowej klasy T i t1 nie jest jednym z typów opisanych w poprzednim elemencie.

  • t1.*f gdy N == 1 i f jest wskaźnikiem do danych składowych klasy T i t1 jest obiektem typu lub odwołaniem do obiektu typu TT lub odwołania do obiektu typu lub odwołania do obiektu typu pochodzącego z Tklasy .

  • (*t1).*f gdy N == 1 i f jest wskaźnikiem do danych składowych klasy T i t1 nie jest jednym z typów opisanych w poprzednim elemencie.

  • f(t1, t2, ..., tN) we wszystkich innych przypadkach.

Pseudo-funkcja INVOKE(f, t1, t2, ..., tN, R) oznacza INVOKE(f, t1, t2, ..., tN) niejawnie przekonwertowaną na R.

Jeśli otoka wywołań ma słaby typ wyniku, typ jego typu result_type elementu członkowskiego jest oparty na typie T obiektu docelowego otoki w następujący sposób:

  • Jeśli T jest wskaźnikiem do funkcji, result_type jest synonimem zwracanego Ttypu .

  • Jeśli T jest wskaźnikiem do funkcji składowej, result_type jest synonimem zwracanego typu T.

  • Jeśli T jest typem klasy, który ma typ result_typeskładowy , to result_type jest synonimem .T::result_type

  • W przeciwnym razie nie ma elementu członkowskiego result_type.

Każda otoka wywołań ma konstruktor przenoszenia i konstruktor kopiujący. Prostą otoką wywołań jest otoka wywołań, która ma operator przypisania, którego konstruktor kopiujący, konstruktor przenoszenia i operator przypisania nie zgłaszają wyjątków. Otoka wywołań przekazujących jest otoką wywołań, którą można wywołać przy użyciu dowolnej listy argumentów i która dostarcza argumenty do opakowanego obiektu wywołującego jako odwołania. Wszystkie argumenty rvalue są dostarczane jako odwołania rvalue, a argumenty lvalue są dostarczane jako odwołania lvalue.

Członkowie

Klasy

Nazwa/nazwisko opis
bad_function_call Klasa, która opisuje zgłoszony wyjątek wskazujący, że wywołanie obiektu operator()funkcji nie powiodło się, ponieważ obiekt był pusty.
binary_negate Szablon klasy dostarczający funkcję składową, która neguje wartość zwracaną określonej funkcji binarnej.
(Przestarzałe w języku C++17).
binder1st Szablon klasy dostarczający konstruktor, który konwertuje obiekt funkcji binarnej na obiekt funkcji jednoargumentowej przez powiązanie pierwszego argumentu funkcji binarnej z określoną wartością.
(Przestarzałe w języku C++11, usunięte w języku C++17).
binder2nd Szablon klasy dostarczający konstruktor, który konwertuje obiekt funkcji binarnej na obiekt funkcji jednoargumentowej przez powiązanie drugiego argumentu funkcji binarnej z określoną wartością.
(Przestarzałe w języku C++11, usunięte w języku C++17).
boyer_moore_horspool_searcher
boyer_moore_searcher
const_mem_fun_ref_t Klasa adaptera, która umożliwia funkcji składowej const, która nie przyjmuje argumentów do wywoływana jako obiekt funkcji jednoargumentowej podczas inicjowania z argumentem odwołania.
(Przestarzałe w języku C++11, usunięte w języku C++17).
const_mem_fun_t Klasa adaptera, która zezwala na funkcję składową const, która nie przyjmuje argumentów do wywoływana jako obiekt funkcji jednoargumentowej podczas inicjowania za pomocą argumentu wskaźnika.
(Przestarzałe w języku C++11, usunięte w języku C++17).
const_mem_fun1_ref_t Klasa adaptera, która umożliwia funkcji składowej const, która przyjmuje jeden argument, który ma być wywoływany jako obiekt funkcji binarnej podczas inicjowania z argumentem odwołania.
(Przestarzałe w języku C++11, usunięte w języku C++17).
const_mem_fun1_t Klasa adaptera, która umożliwia funkcji składowej const, która przyjmuje jeden argument, który ma być wywoływany jako obiekt funkcji binarnej podczas inicjowania za pomocą argumentu wskaźnika.
(Przestarzałe w języku C++11, usunięte w języku C++17).
default_searcher
Funkcja Klasa, która opakowuje obiekt wywoływany.
Mieszania Klasa, która oblicza kod skrótu dla wartości.
is_bind_expression Klasa, która sprawdza, czy określony typ jest generowany przez wywołanie metody bind.
is_placeholder Klasa, która sprawdza, czy określony typ jest symbolem zastępczym.
mem_fun_ref_t Klasa adaptera, która umożliwia funkcji składowej non_const , która nie przyjmuje żadnych argumentów, które mają być wywoływane jako obiekt funkcji jednoargumentowej podczas inicjowania z argumentem odwołania.
(Przestarzałe w języku C++11, usunięte w języku C++17).
mem_fun_t Klasa adaptera, która umożliwia funkcji składowej non_const , która nie przyjmuje żadnych argumentów, które mają być wywoływane jako obiekt funkcji jednoargumentowej podczas inicjowania za pomocą argumentu wskaźnika.
(Przestarzałe w języku C++11, usunięte w języku C++17).
mem_fun1_ref_t Klasa adaptera, która umożliwia funkcji składowej non_const , która przyjmuje jeden argument, który ma być wywoływany jako obiekt funkcji binarnej podczas inicjowania z argumentem odwołania.
(Przestarzałe w języku C++11, usunięte w języku C++17).
mem_fun1_t Klasa adaptera, która umożliwia funkcji składowej non_const , która przyjmuje jeden argument, który ma być wywoływany jako obiekt funkcji binarnej podczas inicjowania za pomocą argumentu wskaźnika.
(Przestarzałe w języku C++11, usunięte w języku C++17).
pointer_to_binary_function Konwertuje wskaźnik funkcji binarnej na funkcję binarną z możliwością dostosowania.
(Przestarzałe w języku C++11, usunięte w języku C++17).
pointer_to_unary_function Konwertuje wskaźnik funkcji jednoargumentowej na funkcję jednoargumentową.
(Przestarzałe w języku C++11, usunięte w języku C++17).
Reference_wrapper Klasa, która opakowuje odwołanie.
unary_negate Szablon klasy dostarczający funkcję składową, która neguje wartość zwracaną określonej funkcji jednoargumentowej.
(Przestarzałe w języku C++17).

Funkcje

Nazwa/nazwisko opis
Powiązać Wiąże argumenty z obiektem, który można wywołać.
bind1st Funkcja szablonu pomocnika, która tworzy adapter do konwertowania obiektu funkcji binarnej na obiekt funkcji jednoargumentowej przez powiązanie pierwszego argumentu funkcji binarnej z określoną wartością.
(Przestarzałe w języku C++11, usunięte w języku C++17).
bind2nd Funkcja szablonu pomocnika, która tworzy adapter do konwertowania obiektu funkcji binarnej na obiekt funkcji jednoargumentowej przez powiązanie drugiego argumentu funkcji binarnej z określoną wartością.
(Przestarzałe w języku C++11, usunięte w języku C++17).
bit_and Zwraca bitowe wartości AND (binarne operator&) dwóch parametrów.
bit_not Zwraca bitowe uzupełnienie (operator~) parametru .
(Dodano w języku C++14).
bit_or Zwraca bitowe OR (operator|) dwóch parametrów.
bit_xor Zwraca bitowy kod XOR (operator^) dwóch parametrów.
Cref Tworzy const reference_wrapper z argumentu.
Wywołać
mem_fn Generuje prostą otokę wywołań.
mem_fun Funkcje szablonu pomocnika używane do konstruowania adapterów obiektów funkcji dla funkcji składowych podczas inicjowania z argumentami wskaźnika.
(Przestarzałe w języku C++11, usunięte w języku C++17).
mem_fun_ref Funkcja szablonu pomocnika używana do konstruowania adapterów obiektów funkcji dla funkcji składowych podczas inicjowania z argumentami odwołania.
not1 Zwraca uzupełnienie predykatu jednoargumentowego.
(Przestarzałe w języku C++17).
not2 Zwraca uzupełnienie predykatu binarnego.
(Przestarzałe w języku C++17).
not_fn Zwraca uzupełnienie wyniku obiektu funkcji.
(Dodano w języku C++17).
ptr_fun Funkcja szablonu pomocnika używana do konwertowania wskaźników funkcji jednoargumentowej i binarnej odpowiednio na funkcje jednoargumentowe i binarne.
(Przestarzałe w języku C++11, usunięte w języku C++17).
ref Tworzy element reference_wrapper z argumentu.
Wymiany Zamienia dwa function obiekty.

Struktury

Nazwa/nazwisko opis
binary_function Pusta klasa bazowa, która definiuje typy, które mogą być dziedziczone przez klasę pochodną, która udostępnia obiekt funkcji binarnej.
(Przestarzałe w języku C++11, usunięte w języku C++17).
Dzieli Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje operację arytmetyczną dzielenia na elementy określonego typu wartości.
Equal_to Predykat binarny, który sprawdza, czy wartość określonego typu jest równa innej wartości tego typu.
greater Predykat binarny, który sprawdza, czy wartość określonego typu jest większa niż inna wartość tego typu.
greater_equal Predykat binarny, który sprawdza, czy wartość określonego typu jest większa lub równa innej wartości tego typu.
less Predykat binarny, który sprawdza, czy wartość określonego typu jest mniejsza niż inna wartość tego typu.
less_equal Predykat binarny, który sprawdza, czy wartość określonego typu jest mniejsza niż lub równa innej wartości tego typu.
logical_and Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje logiczną operację połączenia na elementach określonego typu wartości i sprawdza prawdę lub fałsz wyniku.
logical_not Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje logiczną operację negacji na elementach określonego typu wartości i sprawdza prawdę lub fałsz wyniku.
logical_or Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje logiczną operację rozłączenia na elementach określonego typu wartości i testuje prawdę lub fałszowanie wyniku.
Minus Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje operację arytmetyczną odejmowania na elementach określonego typu wartości.
modulo Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje operację arytmetyczną modulusa na elementach określonego typu wartości.
Mnoży Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje operację arytmetyczną mnożenia elementów określonego typu wartości.
Zanegować Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który zwraca wartość ujemną wartości elementu.
not_equal_to Predykat binarny, który sprawdza, czy wartość określonego typu nie jest równa innej wartości tego typu.
Plus Klasa udostępnia wstępnie zdefiniowany obiekt funkcji, który wykonuje operację arytmetyczną dodawania do elementów określonego typu wartości.
unary_function Pusta klasa bazowa, która definiuje typy, które mogą być dziedziczone przez klasę pochodną, która udostępnia obiekt funkcji jednoargumentowej.
(Przestarzałe w języku C++11, usunięte w języku C++17).

Obiekty

Nazwa/nazwisko opis
_1.._M Symbole zastępcze dla argumentów możliwych do zastąpienia.

Operatory

Nazwa/nazwisko opis
operator== Nie zezwala na porównywanie równości wywoływanych obiektów.
operator!= Nie zezwala na porównanie nierówności obiektów, które można wywołać.

Zobacz też

Odwołanie do plików nagłówka
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++