Libreria C ++ - <funzionale>
introduzione
Gli oggetti funzione sono oggetti progettati specificamente per essere utilizzati con una sintassi simile a quella delle funzioni. Le istanze di std :: function possono archiviare, copiare e richiamare qualsiasi destinazione Callable: funzioni, espressioni lambda, espressioni di binding o altri oggetti funzione, nonché puntatori a funzioni membro e puntatori a membri dati.
Dichiarazione
Di seguito è riportata la dichiarazione per std :: function.
template<class >
class function;
C ++ 11
template< class R, class... Args >
class function<R(Args...)>
Parametri
R - tipo_risultato.
argument_type - T se sizeof ... (Args) == 1 e T è il primo e unico tipo in Args.
Esempio
Nell'esempio seguente per std :: function.
#include <functional>
#include <iostream>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int num_;
};
void print_num(int i) {
std::cout << i << '\n';
}
struct PrintNum {
void operator()(int i) const {
std::cout << i << '\n';
}
};
int main() {
std::function<void(int)> f_display = print_num;
f_display(-9);
std::function<void()> f_display_42 = []() { print_num(42); };
f_display_42();
std::function<void()> f_display_31337 = std::bind(print_num, 31337);
f_display_31337();
std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
const Foo foo(314159);
f_add_display(foo, 1);
std::function<int(Foo const&)> f_num = &Foo::num_;
std::cout << "num_: " << f_num(foo) << '\n';
using std::placeholders::_1;
std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );
f_add_display2(2);
std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 );
f_add_display3(3);
std::function<void(int)> f_display_obj = PrintNum();
f_display_obj(18);
}
L'output di esempio dovrebbe essere così:
-9
42
31337
314160
num_: 314159
314161
314162
18
Funzioni dei membri
| Sr.No. | Funzioni dei membri | Definizione |
|---|---|---|
| 1 | (costruttore) | Viene utilizzato per costruire una nuova istanza std :: function |
| 2 | (distruttore) | Viene utilizzato per distruggere un'istanza std :: function |
| 3 | operatore = | Viene utilizzato per assegnare un nuovo target |
| 4 | scambiare | Viene utilizzato per scambiare i contenuti |
| 5 | assegnare | Viene utilizzato per assegnare un nuovo target |
| 6 | operatore bool | Viene utilizzato per verificare se è contenuto un obiettivo valido |
| 7 | operatore() | Viene utilizzato per invocare il target |
Funzioni non membro
| Sr.No. | Funzioni non membro | Definizione |
|---|---|---|
| 1 | std :: swap | È specializzato l'algoritmo std :: swap |
| 2 | operatore == operatore! = | Confronta una funzione std :: con nullptr |
Classi di operatori
| Sr.No. | Classi di operatori | Definizione |
|---|---|---|
| 1 | bit_and | È una classe di oggetti funzione AND bit per bit |
| 2 | bit_or | È una classe di oggetti funzione OR bit per bit |
| 3 | bit_xor | È una classe di oggetti funzione XOR bit per bit |
| 3 | divide | È una classe di oggetti della funzione di divisione |
| 4 | uguale a | È una classe di oggetti funzione per il confronto di uguaglianza |
| 5 | maggiore | È una classe di oggetti funzione per il confronto di disuguaglianze maggiori |
| 6 | maggiore_uguale | È una classe di oggetti funzione per il confronto maggiore o uguale a |
| 7 | Di meno | È una classe di oggetti funzione per il confronto di disuguaglianze minori |
| 8 | less_equal | È una classe di oggetti funzione per il confronto minore o uguale a |
| 9 | logico_and | È una classe di oggetti funzione AND logica |
| 10 | logico_not | È una classe di oggetti funzione NOT logica |
| 11 | logico_or | È una classe di oggetti funzione OR logica |
| 12 | meno | È una classe di oggetti della funzione di sottrazione |
| 13 | modulo | È una classe di oggetti funzione modulo |
| 14 | si moltiplica | È una classe di oggetti della funzione di moltiplicazione |
| 15 | negare | È una classe di oggetti funzione negativa |
| 16 | not_equal_to | È una classe di oggetti funzione per il confronto di non uguaglianza |
| 17 | più | È una classe di oggetti funzione di addizione |
