<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)
gdyf
jest wskaźnikiem do funkcji składowej klasyT
it1
jest obiektem typu lub odwołaniem do obiektu typuT
T
lub odwołania do obiektu typu lub odwołania do obiektu typu pochodzącego zT
klasy .((*t1).*f)(t2, ..., tN)
gdyf
jest wskaźnikiem do funkcji składowej klasyT
it1
nie jest jednym z typów opisanych w poprzednim elemencie.t1.*f
gdy N == 1 if
jest wskaźnikiem do danych składowych klasyT
it1
jest obiektem typu lub odwołaniem do obiektu typuT
T
lub odwołania do obiektu typu lub odwołania do obiektu typu pochodzącego zT
klasy .(*t1).*f
gdy N == 1 if
jest wskaźnikiem do danych składowych klasyT
it1
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 zwracanegoT
typu .Jeśli
T
jest wskaźnikiem do funkcji składowej,result_type
jest synonimem zwracanego typuT
.Jeśli
T
jest typem klasy, który ma typresult_type
składowy , toresult_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.
Elementy członkowskie
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. |
hasz | 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 |
---|---|
wią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. |
zamiana | 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. |
negować | 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++