Compartilhar via


<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

bad_function_call

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.

binary_negate

Uma classe do modelo que fornece uma função de membro que nega o valor de retorno de uma função binário especificada.

binder1st

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.

binder2nd

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.

const_mem_fun_ref_t

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.

const_mem_fun_t

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.

const_mem_fun1_ref_t

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.

const_mem_fun1_t

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.

função

Uma classe que envolve um objeto acessível.

hash

Uma classe que computa um código hash para um valor.

is_bind_expression

Uma classe que testa se um tipo específico é gerado bindchamando.

is_placeholder

Uma classe que testa se um tipo específico é um espaço reservado.

mem_fun_ref_t

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.

mem_fun_t

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.

mem_fun1_ref_t

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.

mem_fun1_t

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.

pointer_to_binary_function

Converte um ponteiro binária da função em uma função adaptávela binário.

pointer_to_unary_function

Converte um ponteiro unário da função em uma função adaptávela unário.

reference_wrapper

Uma classe que envolve uma referência.

result_of

Uma estrutura que contém o tipo de retorno de um objeto acessível ajustado.

unary_negate

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

associar

Associa argumentos a um objeto acessível.

bind1st

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.

bind2nd

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.

bit_and

Retorna o E lógico bit a bit (operador&binário) dos dois parâmetros.

bit_not

Retorna o complemento lógico bit a bit (operator~) do parâmetro.

bit_or

Retorna o operador lógico bit a bit (operador|) dos dois parâmetros.

bit_xor

Retorna XOR lógico bit a bit) (operator^ dos dois parâmetros.

cref

Constrói um const reference_wrapper de um argumento.

mem_fn

Gerencie um wrapper simples de chamada.

mem_fun

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.

mem_fun_ref

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.

not1

Retorna o complemento de um predicado unário.

not2

Retorna o complemento de um predicado binário.

ptr_fun

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.

referência

Constrói reference_wrapper de um argumento.

troca

Alterna dois objetos function.

Structs

binary_function

Uma classe base vazio que define os tipos que podem ser herdadas pela classe derivada que fornece um objeto binário da função.

divide

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.

equal_to

Um predicado binário que testa se um valor de um tipo especificado é igual a outro valor desse tipo.

maior que

Um predicado binário que testa se um valor de um tipo especificado é maior que outro valor desse tipo.

greater_equal

Um predicado binário que testa se um valor de um tipo especificado for maior ou igual a outro valor desse tipo.

menos

Um predicado binário que testa se um valor de um tipo especificado for menor que outro valor desse tipo.

less_equal

Um predicado binário que testa se um valor de um tipo especificado for menor ou igual a outro valor desse tipo.

logical_and

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.

logical_not

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.

logical_or

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.

negativo

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.

módulo

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.

multiplica

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.

negue

A classe fornece um objeto predefinido da função que retorna o valor negativo de um valor do elemento.

not_equal_to

Um predicado binário que testa se um valor de um tipo especificado é diferente de outro valor desse tipo.

positivo

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.

unary_function

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

_1. _M

Espaços reservados para argumentos substituíveis.

Operadores

operador==

Recusará a comparação de igualdade de objetos acessíveis.

operador !=

Recusará a comparação de desigualdade de objetos acessíveis.

Consulte também

Referência

Segurança de threads na Biblioteca Padrão C++

Biblioteca de Modelos Padrão

Outros recursos

<functional> Membros

Arquivos de cabeçalho da Biblioteca Padrão C++