<functional>
Definisce le funzioni della libreria STL (Standard Template) che consentono di costruire oggetti function, detta anche functors e i raccoglitori.Una funzione è un oggetto di un tipo che definisce operator().Un oggetto funzione può essere un puntatore a funzione, ma di solito, l'oggetto viene utilizzato per memorizzare informazioni aggiuntive che è possibile accedere durante una chiamata di funzione.
#include <functional>
Note
Gli algoritmi richiedono due tipi di oggetti function: unari e binari.Oggetti funzione unario richiedono un argomento e oggetti binari di funzione richiedono due argomenti.Un oggetto function e puntatori a funzione può essere passati come un predicato a un algoritmo, ma gli oggetti funzione inoltre sono adattabili e aumentano l'ambito, flessibilità ed efficienza di STL.Se, ad esempio, è necessario un valore da associare a una funzione prima di essere passato a un algoritmo, un puntatore a funzione non può essere utilizzato.Adattatori di funzione consente di convertire i puntatori a funzione in oggetti funzione adattabile che possono essere associati a un valore.L'intestazione <functional> contiene anche gli adattatori di funzione membro che consentono di funzioni membro per essere chiamato come oggetti funzione adattabile.Le funzioni sono adattabili se dispongono di dichiarazioni di tipi nidificati se si specifica l'argomento e i tipi restituiscono.Lo Standard di C++, è necessario che questa capacità di adattamento viene implementato dalla presenza di tutte le classi di oggetti standard ereditare dalle classi base unary_function o binary_function.Gli oggetti di funzione e loro adattatori consentono di STL aggiornare le applicazioni esistenti e integrare l'ambiente di programmazione C++ di STL.
Estensioni TR1
Nell'implementazione di Visual C++ di TR1 vengono aggiunte le seguenti funzionalità:
A chiamata firma è il nome di un tipo restituito, seguito da un elenco di separati da virgola tra parentesi, zero o più tipi di argomento.
A chiamata wrapper è un oggetto di un tipo di wrapper di chiamata.
A tipo di wrapper di chiamare è un tipo che contiene un oggetto RCW e supporta un'operazione di chiamata che consente di inoltrare a tale oggetto.
A oggetto callable è un oggetto di un tipo di RCW.
A tipo callable è un puntatore a funzione, un puntatore a funzione membro, un puntatore a membro dati o un tipo di classe cui oggetti possono essere visualizzate immediatamente a sinistra di un operatore di chiamata della funzione.
A oggetto destinazione è l'oggetto callable detenuto da un oggetto wrapper di chiamata.
Il pseudo-function INVOKE(f, t1, t2, ..., tN) indica che una delle seguenti operazioni:
(t1.*f)(t2, ..., tN)Quando f è un puntatore a funzione membro della classe T e t1 è un oggetto di tipo T o un riferimento a un oggetto di tipo T o un riferimento a un oggetto di un tipo derivato da T.
((*t1).*f)(t2, ..., tN)Quando f è un puntatore a funzione membro della classe T e t1 non è uno dei tipi descritti nell'articolo precedente.
t1.*fQuando f è un puntatore ai dati dei membri della classe T e t1 è un oggetto di tipo T o un riferimento a un oggetto di tipo T o un riferimento a un oggetto di un tipo derivato da T.
(*t1).*fQuando f è un puntatore ai dati dei membri della classe T e t1 non è uno dei tipi descritti nell'articolo precedente.
f(t1, t2, ..., tN)in tutti gli altri casi.
Il pseudo-function INVOKE(f, t1, t2, ..., tN, R) significa INVOKE(f, t1, t2, ..., tN) convertito in modo implicito per R.
Se dispone di un wrapper di chiamata di un tipo di risultato debole, il tipo del relativo tipo di membro result_type in base al tipo T dell'oggetto di destinazione del wrapper, come illustrato di seguito:
Se T è un puntatore a funzione, result_type è un sinonimo per il tipo restituito di T.
Se T è un puntatore a funzione membro, result_type è un sinonimo per il tipo restituito di T.
Se T è un puntatore a membro di dati result_type è un sinonimo per il tipo del membro dati dichiarato.
Se T è un tipo di classe che dispone di un tipo di membro result_type, quindi result_type è un sinonimo di T::result_type.
In caso contrario, non vi è alcun membro result_type.
Wrapper ogni chiamata dispone di un costruttore di copia.A chiamata semplice wrapper è un wrapper di chiamata che ha un'assegnazione di operatore e quale costruttore di copia e l'operatore di assegnazione non generano eccezioni.A inoltro chiamata wrapper è un wrapper di chiamata può essere chiamato utilizzando un elenco di argomenti t1, t2, ..., tN, dove ogni ti è un lvalue.
I wrapper di chiamata definiti in questa operatori chiamata di funzione di intestazione supporto dispongono degli argomenti dei tipi di T1, T2, ..., TN, dove 0 <= N <= NMAX.In questa implementazione, il valore di NMAX è 10.
Classi
Una classe che descrive un'eccezione generata per indicare che una chiamata a operator() in un funzione oggetto non riuscita perché l'oggetto era vuoto. |
|
Una classe modello che fornisce una funzione membro che nega il valore restituito di una funzione di binario specificato. |
|
Una classe modello che fornisce un costruttore che converte un oggetto binario di funzione in un oggetto di funzione unario associando il primo argomento della funzione binario su un valore specificato. |
|
Una classe modello che fornisce un costruttore che converte un oggetto binario di funzione in un oggetto di funzione unario associando il secondo argomento della funzione binario su un valore specificato. |
|
Una classe di adattatori che consente a una funzione membro const che non accetta argomenti per essere chiamato come un oggetto di funzione unario quando viene inizializzato con un argomento di riferimento. |
|
Una classe di adattatori che consente a una funzione membro const che non accetta argomenti per essere chiamato come un oggetto di funzione unario quando viene inizializzato con un argomento del puntatore. |
|
Una classe di adattatori che consente a una funzione membro const che accetta un singolo argomento per essere chiamato come un oggetto binario di funzione quando viene inizializzato con un argomento di riferimento. |
|
Una classe di adattatori che consente a una funzione membro const che accetta un singolo argomento per essere chiamato come un oggetto binario di funzione quando viene inizializzato con un argomento del puntatore. |
|
Una classe che esegue il wrapping di un oggetto RCW. |
|
Una classe che consente di calcolare un codice hash per un valore. |
|
Una classe che verifica se un determinato tipo viene generato chiamando bind. |
|
Una classe che verifica se un determinato tipo è un segnaposto. |
|
Una classe di adattatori che consente a un non_const funzione membro che non accetta argomenti per essere chiamato come un oggetto di funzione unario quando viene inizializzato con un argomento di riferimento. |
|
Una classe di adattatori che consente a un non_const funzione membro che non accetta argomenti per essere chiamato come un oggetto di funzione unario quando viene inizializzato con un argomento del puntatore. |
|
Una classe di adattatori che consente a un non_const funzione membro che accetta un singolo argomento per essere chiamato come un oggetto binario di funzione quando viene inizializzato con un argomento di riferimento. |
|
Una classe di adattatori che consente a un non_const funzione membro che accetta un singolo argomento per essere chiamato come un oggetto binario di funzione quando viene inizializzato con un argomento del puntatore. |
|
Converte un puntatore a funzione binari in una funzione di binaria adattabile. |
|
Converte un puntatore a funzione unario in una funzione unaria adattabile. |
|
Una classe che esegue il wrapping di un riferimento. |
|
Struttura che contiene il tipo restituito di un oggetto richiamabile con ritorno a capo. |
|
Una classe modello che fornisce una funzione membro che nega il valore restituito di una funzione unario specificato. |
Funzioni
Associa gli argomenti a un oggetto RCW. |
|
Una funzione del modello di supporto che crea un adattatore per convertire un oggetto binario di funzione in un oggetto di funzione unario associando il primo argomento della funzione binario su un valore specificato. |
|
Una funzione del modello di supporto che crea un adattatore per convertire un oggetto binario di funzione in un oggetto di funzione unario associando il secondo argomento della funzione binario su un valore specificato. |
|
Restituisce il valore binario AND dei due parametri. |
|
Restituisce il binario o tra i due parametri. |
|
Restituisce il binario XOR tra i due parametri. |
|
Costruisce una variabile const reference_wrapper da un argomento. |
|
Genera un wrapper semplice chiamata. |
|
Funzioni del modello di supporto utilizzate per creare adattatori di oggetto funzione per le funzioni membro quando viene inizializzato con gli argomenti del puntatore. |
|
Funzione del modello di supporto utilizzata per creare adattatori di oggetto funzione per le funzioni membro quando viene inizializzato con gli argomenti di riferimento. |
|
Restituisce il complemento di un predicato unario. |
|
Restituisce il complemento di un predicato binario. |
|
Una funzione del modello di supporto utilizzato per convertire unaria e funzione binario puntatori, rispettivamente, nelle funzioni flessibili unari e binari. |
|
Costruisce un reference_wrapper da un argomento. |
|
Scambia due function oggetti. |
Strutture
Classe base vuota che definisce i tipi che possono essere ereditati dalla classe derivata che fornisce un oggetto funzione binario. |
|
La classe fornisce una funzione predefinita che esegue un'operazione aritmetica di divisione di elementi di un tipo di valore specificato. |
|
Un predicato binario che verifica se un valore di un tipo specificato è uguale a un altro valore di quel tipo. |
|
Un predicato binario che verifica se un valore di un tipo specificato è maggiore di un altro valore di quel tipo. |
|
Un predicato binario che verifica se un valore di un tipo specificato è maggiore o uguale a un altro valore di quel tipo. |
|
Un predicato binario che verifica se un valore di un tipo specificato è minore di un altro valore di quel tipo. |
|
Un predicato binario che verifica se un valore di un tipo specificato è minore o uguale a un altro valore di quel tipo. |
|
La classe fornisce un oggetto di funzione predefinite che esegue l'operazione logica dell'insieme agli elementi di un tipo di valore specificato e test per la verità o falsity del risultato. |
|
La classe fornisce un oggetto di funzione predefinite che esegue l'operazione di negazione logica agli elementi di un tipo di valore specificato e test per la verità o falsity del risultato. |
|
La classe fornisce un oggetto di funzione predefinite che esegue l'operazione di disgiunzione logica agli elementi di un tipo di valore specificato e test per la verità o falsity del risultato. |
|
La classe fornisce un oggetto funzione predefinita che esegue l'operazione di sottrazione aritmetica su elementi di un tipo di valore specificato. |
|
La classe fornisce un oggetto funzione predefinita che esegue un'operazione aritmetica del modulo di elementi di un tipo di valore specificato. |
|
La classe fornisce un oggetto funzione predefinita che esegue l'operazione di moltiplicazione aritmetica su elementi di un tipo di valore specificato. |
|
La classe fornisce un oggetto funzione predefinita che restituisce il valore negativo di un valore dell'elemento. |
|
Un predicato binario che verifica se un valore di un tipo specificato non è uguale a un altro valore di quel tipo. |
|
La classe fornisce una funzione predefinita che esegue un'operazione aritmetica di aggiunta di elementi di un tipo di valore specificato. |
|
Classe base vuota che definisce i tipi che possono essere ereditati dalla classe derivata che fornisce un oggetto di funzione unario. |
Oggetti
Segnaposto per gli argomenti sostituibili. |
Operatori
Non consente il confronto di uguaglianza di oggetti disponibili per la chiamata. |
|
Non consente il confronto di disuguaglianza di oggetti disponibili per la chiamata. |
Vedere anche
Riferimenti
Thread safety della libreria C++ standard