Criar mais legível e conciso código C ++
Uma das vantagens do uso de C ++ é que você pode criar um código conciso que é fácil de ler. Porque você pode ver mais do código em uma só página, C ++ é muitas vezes mais fácil de entender bem, porque você não tem que rolar a página editor para ver toda a solução para um problema particular.
No entanto, existem alguns tipos de problemas C ++ que exigiam uma solução bastante detalhado em versões anteriores do C ++. Começando com C ++ 11, os desenvolvedores têm uma nova técnica para resolver estes problemas de maneiras que trazem código C ++ volta às suas raízes concisas.
Você pode resolver uma série de problemas de desenvolvimento C ++ usando expressões lambda, mas o problema típico é aquele de tornar o código mais conciso e fácil de ler. Não há absolutamente nada de errado com o Problema exemplo mostrado - ele funciona muito bem, como mostrado.
#incluir#incluir #incluir usando MyFunctor namespace std-classe {public: void operator () (int x) {cout lt; lt; x lt; lt; endl -}} - ProcessVector void (vector vect) {MyFunctor Func-for_each (vect.begin (), vect.end (), Func) -} int main () {vector MyVector-MyVector.push_back(1)-MyVector.push_back(2)-MyVector.push_back(3)-MyVector.push_back(4)-ProcessVector(MyVector)-}
Neste caso, o exemplo cria um vetor, myVector, e preenche-lo com dados. Em seguida, chama ProcessVector () para executar uma tarefa com os dados no vector.
A chamada para ProcessVector () cria um functor - uma classe especial de objeto que age como se fosse uma função - nomeado Func. Este é um tipo extremamente útil de uma classe. Por enquanto, tudo o que você precisa saber é que é um tipo especial de uma classe que age como uma função.
o para cada() algoritmo é parte da biblioteca padrão. Processa cada elemento vect, o vector passado para ProcessVector (), começando no primeiro elemento (definido pela vect.begin ()) E terminando com o último elemento (definido pela vect.end ()) usando Func.
Quando você olha para MyFunctor, você vê uma definição para uma operador que requer uma única int entrada, x. Tudo o que o código faz é emitido x para o console. Então você vê o seguinte resultado deste exemplo.
1234