O que são functores em C++ e para que servem?
Olá! Estou estudando C++ e me deparei com o termo "functor" (functor). Li que é algo como um objeto que se comporta como uma função. Mas não entendo muito bem para que isso serve, se existem funções comuns e ponteiros para funções.
Por exemplo, sei que posso passar uma função para `std::sort` como comparador:
```cpp
bool compare(int a, int b) {
return a < b;
}
std::sort(vec.begin(), vec.end(), compare);
```
Mas por que usar um objeto com `operator()` sobrecarregado? Qual é a vantagem? Ouvi dizer que functores podem armazenar estado, mas não entendo como aplicar isso na prática. Pode explicar com um exemplo simples onde um functor é realmente mais conveniente que uma função comum?
E outra pergunta: functores são a mesma coisa que expressões lambda? Ou são coisas diferentes? Agradeço por uma explicação detalhada com exemplos de código.
<<>>
O que é um functor?
Um functor (ou objeto funcional) é uma classe ou struct na qual o operador de chamada de função operator() é sobrecarregado.