std::transform
Aplica uma operação unária ou binária a cada elemento de um intervalo [first, last)
e armazena os resultados em um intervalo de saída.
- Cabeçalho:
<algorithm>
- Assinatura:
transform(InputIt first, InputIt last, OutputIt result, UnaryOperation op);
transform(InputIt1 first1, InputIt1 last1, InputIt2 first2, OutputIt result, BinaryOperation op);
- Parâmetros:
- first, last - Iteradores que definem o intervalo de entrada para a versão unária.
- first1, last1 - Iteradores que definem o primeiro intervalo de entrada para a versão binária.
- first2 - Iterador para o início do segundo intervalo de entrada (versão binária).
- result - Iterador para o início do intervalo de saída.
- op - Operação unária ou binária a ser aplicada aos elementos.
- Retorno: Iterador para o fim do intervalo de saída.
- Exceções: Depende da operação op fornecida; a própria transform não lança exceções, a menos que op o faça.
- Versão:
C++98
- Performance: O(N), onde N é o número de elementos no intervalo.
- Exemplo:
#include <algorithm>
#include <vector>
#include <iostream>
int main() {
// Versão unária
std::vector<int> vec = {1, 2, 3, 4};
std::vector<int> result(4);
std::transform(vec.begin(), vec.end(), result.begin(), [](int x) { return x * 2; });
for (int x : result) std::cout << x << " "; // Imprime: 2 4 6 8
// Versão binária
std::vector<int> vec2 = {10, 20, 30, 40};
std::transform(vec.begin(), vec.end(), vec2.begin(), result.begin(), std::plus<int>{});
for (int x : result) std::cout << x << " "; // Imprime: 11 22 33 44
return 0;
}