<functional>
Define funções da biblioteca padrão que os objetos - também da funçãode compilação da ajuda conhecidos como functors- e suas pastas. Um objeto de função é um objeto de tipo que define operator(). Um objeto da função pode ser um ponteiro de função, mas normalmente, o objeto é usado para armazenar informações adicionais que pode ser acessada durante uma chamada de função.
#include <functional>
Comentários
Os algoritmos requerem dois tipos de objetos de função: unário e binário. Os objetos unários da função exigem um argumento, e os objetos binários da função requer dois argumentos. Um objeto de função e os ponteiros da função podem ser passados como um predicado como um algoritmo, mas os objetos de função também são adaptávens e aumenta o escopo, a flexibilidade, e a eficiência de STL. Se, por exemplo, um valor de precisou ser associado a uma função antes de ser passada para um algoritmo, um ponteiro de função não pôde ser usado. Os adaptadores da função converte ponteiros da função nos objetos adaptávens de função que podem ser associados a um valor. O cabeçalho <funcional> também contém os adaptadores da função de membro que permitem que as funções de membro são chamadas como objetos adaptávens da função. As funções são adaptávelas se aninharam declarações de tipo que especificam os argumentos e tipos de retorno. O padrão do C++ requer que essa adaptação é implementada em todas as classes de objeto padrão herda das classes base de unary_function ou de binary_function. Os objetos de função e os adaptadores permitem que o STL atualiza os aplicativos existentes e a ajuda a integrar o STL no ambiente de programação C++.
A implementação de Visual C++ de objetos da função <em funcional> inclui os functors transparentes do operador, que são especializações de objetos da função padrão e não têm nenhum parâmetro do modelo, e executa o encaminhamento perfeita dos argumentos da função e aperfeiçoa o resultado retornam. Esse recurso faz parte da especificação padrão de rascunho C++14. Essas especializações do modelo não exigem que você especifica tipos de argumento quando você invoca a aritmética, a comparação, as lógicas, e functors bit a bit do operador. Você pode sobrecarregar a aritmético, de comparação, lógica, ou operadores bit a bit para seus próprios tipos, ou para combinações heterogêneas de tipos, e usar os functors transparentes do operador como argumentos da função. Por exemplo, se seu tipo MyType implementa operator<, você pode chamar sort(my_collection.begin(), my_collection.end(), less<>()) em vez de especificar explicitamente o tipo sort(my_collection.begin(), my_collection.end(), less<MyType>()).
Implementação C++11/C++14
Os seguintes recursos são adicionados na implementação do Visual C++ de C++11/C++14:
Uma assinatura de chamada é o nome de um tipo de retorno seguido por uma lista separada por vírgulas posta entre parênteses de zero ou mais tipos do argumento.
Um tipo acessível é um ponteiro para funcionar, um ponteiro para a função de membro, um ponteiro para os dados de membro, ou um tipo de classe cujos objetos possam aparecer imediatamente à esquerda de um operador da chamada de função.
Um objeto acessível é um objeto de tipo acessível.
Um tipo de wrapper de chamada é um tipo que contém um objeto acessível e oferece suporte a uma operação de chamada que encaminha a esse objeto.
Um wrapper de chamada é um objeto de tipo de wrapper de chamada.
Um objeto de destino é o objeto acessível mantido por um objeto de wrapper de chamada.
Pseudo da função INVOKE(f, t1, t2, ..., tN) significa uma das seguintes ações:
(t1.*f)(t2, ..., tN) quando f é um ponteiro para a função de membro da classe T e t1 é um objeto de tipo T ou uma referência a um objeto de tipo T ou uma referência a um objeto de um tipo derivado de T.
((*t1).*f)(t2, ..., tN) quando f é um ponteiro para a função de membro da classe T e t1 não for um dos tipos descritos no item anterior.
quandot1.*f == 1 de e Em f é um ponteiro para os dados de membro de uma classe T e t1 é um objeto de tipo T ou uma referência a um objeto de tipo T ou uma referência a um objeto de um tipo derivado de T.
quando(*t1).*f == 1 de e Em f é um ponteiro para os dados de membro de uma classe T e t1 não for um dos tipos descritos no item anterior.
f(t1, t2, ..., tN) em todos os outros casos.
Pseudo da função INVOKE(f, t1, t2, ..., tN, R) significa INVOKE(f, t1, t2, ..., tN) convertido implicitamente em R.
Se um wrapper de chamada tiver um tipo de resultado fraco, o tipo de seu tipo result_type do membro será baseado no tipo T do objeto de destino de wrapper, como segue:
Se T é um ponteiro para funcionar, result_type é um sinônimo para o tipo de retorno de T.
Se T é um ponteiro para a função de membro, result_type é um sinônimo para o tipo de retorno de T.
Se T é um tipo de classe que tem um tipo result_typede membro, então result_type é um sinônimo para T::result_type.
Caso contrário, não há membros result_type.
Cada wrapper de chamada tiver um construtor de movimentação e um construtor de cópia. Um wrapper simples de chamada é um wrapper de chamada que tenha um operador de atribuição e cujos construtor de impressão, o construtor de movimentação, e o operador de atribuição não joguem exceções. Um wrapper de chamada de transmissão é um wrapper de chamada que possam ser chamados usando uma lista de argumentos e arbitrária que fornece os argumentos para o objeto acessível definido como referências. Todos os argumentos de rvalue são entregues como as referências de rvalue, e os argumentos de lvalue são entregues como referências de lvalue.
Classes
Uma classe que descreve uma exceção lançada para indicar que uma chamada a operator() em um objeto de função porque o objeto estiver vazia. |
|
Uma classe do modelo que fornece uma função de membro que nega o valor de retorno de uma função binário especificada. |
|
Uma classe do modelo que fornece um construtor que converte um objeto binário da função em um objeto unário da função associando o primeiro argumento da função binário a um valor especificado. |
|
Uma classe do modelo que fornece um construtor que converte um objeto binário da função em um objeto unário da função associando o segundo argumento da função binário a um valor especificado. |
|
Uma classe de adaptador que permite uma função de membro de const que não leve argumentos a ser chamado como um objeto unário da função quando inicializada com um argumento de referência. |
|
Uma classe de adaptador que permite uma função de membro de const que não leve argumentos a ser chamado como um objeto unário da função quando inicializada com um argumento do ponteiro. |
|
Uma classe de adaptador que permite uma função de membro de const que usa um único argumento a ser chamado como um objeto binário da função quando inicializada com um argumento de referência. |
|
Uma classe de adaptador que permite uma função de membro de const que usa um único argumento a ser chamado como um objeto binário da função quando inicializada com um argumento do ponteiro. |
|
Uma classe que envolve um objeto acessível. |
|
Uma classe que computa um código hash para um valor. |
|
Uma classe que testa se um tipo específico é gerado bindchamando. |
|
Uma classe que testa se um tipo específico é um espaço reservado. |
|
Uma classe de adaptador que permite uma função de membro de non_const que não leve argumentos a ser chamado como um objeto unário da função quando inicializada com um argumento de referência. |
|
Uma classe de adaptador que permite uma função de membro de non_const que não leve argumentos a ser chamado como um objeto unário da função quando inicializada com um argumento do ponteiro. |
|
Uma classe de adaptador que permite uma função de membro de non_const que usa um único argumento a ser chamado como um objeto binário da função quando inicializada com um argumento de referência. |
|
Uma classe de adaptador que permite uma função de membro de non_const que usa um único argumento a ser chamado como um objeto binário da função quando inicializada com um argumento do ponteiro. |
|
Converte um ponteiro binária da função em uma função adaptávela binário. |
|
Converte um ponteiro unário da função em uma função adaptávela unário. |
|
Uma classe que envolve uma referência. |
|
Uma estrutura que contém o tipo de retorno de um objeto acessível ajustado. |
|
Uma classe do modelo que fornece uma função de membro que nega o valor de retorno de uma função unário especificada. |
Funções
Associa argumentos a um objeto acessível. |
|
Uma função auxiliar do modelo que cria um adaptador para converter um objeto binário da função em um objeto unário da função associando o primeiro argumento da função binário a um valor especificado. |
|
Uma função auxiliar do modelo que cria um adaptador para converter um objeto binário da função em um objeto unário da função associando o segundo argumento da função binário a um valor especificado. |
|
Retorna o E lógico bit a bit (operador&binário) dos dois parâmetros. |
|
Retorna o complemento lógico bit a bit (operator~) do parâmetro. |
|
Retorna o operador lógico bit a bit (operador|) dos dois parâmetros. |
|
Retorna XOR lógico bit a bit) (operator^ dos dois parâmetros. |
|
Constrói um const reference_wrapper de um argumento. |
|
Gerencie um wrapper simples de chamada. |
|
Funções de modelo de auxiliar usadas para construir adaptadores do objeto de função para funções de membro quando inicializado com argumentos do ponteiro. |
|
Uma função auxiliar de modelo usada para construir adaptadores do objeto de função para funções de membro quando inicializado com argumentos de referência. |
|
Retorna o complemento de um predicado unário. |
|
Retorna o complemento de um predicado binário. |
|
Uma função auxiliar de modelo usada para converter ponteiros unários e binários da função, respectivamente, funções adaptávelas unários e binários. |
|
Constrói reference_wrapper de um argumento. |
|
Alterna dois objetos function. |
Structs
Uma classe base vazio que define os tipos que podem ser herdadas pela classe derivada que fornece um objeto binário da função. |
|
A classe fornece um objeto predefinido de função que executa a operação de divisão aritmética nos elementos de um tipo de valor especificado. |
|
Um predicado binário que testa se um valor de um tipo especificado é igual a outro valor desse tipo. |
|
Um predicado binário que testa se um valor de um tipo especificado é maior que outro valor desse tipo. |
|
Um predicado binário que testa se um valor de um tipo especificado for maior ou igual a outro valor desse tipo. |
|
Um predicado binário que testa se um valor de um tipo especificado for menor que outro valor desse tipo. |
|
Um predicado binário que testa se um valor de um tipo especificado for menor ou igual a outro valor desse tipo. |
|
A classe fornece um objeto predefinido de função que executa a operação lógica de junção nos elementos de um tipo de valor especificado e a testar a legitimidade ou a falsidade de resultado. |
|
A classe fornece um objeto predefinido de função que executa a operação lógica de negação dos elementos de um tipo de valor especificado e a testar a legitimidade ou a falsidade de resultado. |
|
A classe fornece um objeto predefinido de função que executa a operação lógica da disjunção nos elementos de um tipo de valor especificado e a testar a legitimidade ou a falsidade de resultado. |
|
A classe fornece um objeto predefinido de função que executa a operação aritmética de subtração nos elementos de um tipo de valor especificado. |
|
A classe fornece um objeto predefinido de função que executa a operação aritmética do módulo nos elementos de um tipo de valor especificado. |
|
A classe fornece um objeto predefinido de função que executa a operação aritmética de multiplicação nos elementos de um tipo de valor especificado. |
|
A classe fornece um objeto predefinido da função que retorna o valor negativo de um valor do elemento. |
|
Um predicado binário que testa se um valor de um tipo especificado é diferente de outro valor desse tipo. |
|
A classe fornece um objeto predefinido de função que executa a operação aritmética de adição nos elementos de um tipo de valor especificado. |
|
Uma classe base vazio que define os tipos que podem ser herdadas pela classe derivada que fornece um objeto unário da função. |
Objetos
Espaços reservados para argumentos substituíveis. |
Operadores
Recusará a comparação de igualdade de objetos acessíveis. |
|
Recusará a comparação de desigualdade de objetos acessíveis. |
Consulte também
Referência
Segurança de threads na Biblioteca Padrão C++