Avatar ·

¿Qué son los funtores en C++ y por qué se necesitan?

¡Hola! Estoy estudiando C++ y me topé con el término "functor" (functor). Leí que es algo así como un objeto que se comporta como una función. Pero no entiendo bien por qué se necesita, si existen funciones normales y punteros a funciones. Por ejemplo, sé que se puede pasar una función a `std::sort` como comparador: ```cpp bool compare(int a, int b) { return a < b; } std::sort(vec.begin(), vec.end(), compare); ``` ¿Pero por qué usar un objeto con `operator()` sobrecargado? ¿Cuál es la ventaja? He oído que los funtores pueden almacenar estado, pero no entiendo cómo aplicarlo en la práctica. ¿Puedes explicarlo con un ejemplo simple donde un functor sea realmente más conveniente que una función normal? Y otra pregunta: ¿los funtores son lo mismo que las lambda expressions? ¿O son cosas diferentes? Agradecería una explicación detallada con ejemplos de código. <<>>

¿Qué es un functor?

Un functor (u objeto funcional) es una clase o estructura en la que se sobrecarga el operador de llamada a función operator().