Básicamente necesita saber qué hace la función transform y qué hace la clase negate .
Veamos la clase negativa:
plantilla struct negate {
- ¿Cuál es el punto de los algoritmos gráficos?
- ¿Qué es la clasificación interna y la clasificación externa?
- Un profesor me dijo que no me molestara en aprender muchos lenguajes de programación sino que me enfocara solo en C ++, estructuras de datos y algoritmos, ¿tiene razón?
- ¿Cuál es la forma más eficiente de representar una matriz binaria dispersa?
- ¿Por qué no usamos el aprendizaje automático para mejorar los modelos climáticos?
Operador T () (const T & x) const {return -x;}
typedef T argumento_tipo;
typedef T result_type;
};
Como puede ver arriba, el operador () está sobrecargado y toma un tipo de plantilla con la que se instancia, en su caso int. Tan claro hasta ahora.
A continuación, la función Transform tiene 2 tipos de API, una que requiere un operador unario como negate (en su caso) y algún tiempo operador binario (como plus , porque necesitan 2 operandos para agregar).
Ahora en su caso, su primer tipo de API que toma un operador unario.
transform (a, a + size, a, negate ());
Entonces, actúa en una matriz de tamaño a a +, y pasa cada valor para negar (a [i)), obtener el resultado de ese operador () y almacenarlo en un (tercer parámetro)
Espero que sea claro.