std::plus
std::plus<informar o tipo ou nada>
É um objeto Function para realizar a adição. A classe de objeto cuja chamada retorna o resultado da adição de seus dois argumentos (conforme retornado pelo operador +).
Somar x + y
#include <iostream>
int main(){
int x = 3, y = 6;
std::cout << std::plus<int>{}( x, y ) << '\n'; // 9
return 0;
}
Concatenar duas strings
std::string ola = "Olá, ", mundo = "Mundo!";
std::cout << std::plus<std::string>{}( ola, mundo ) << '\n'; // Olá, Mundo!
Concatenar tipos diferentes. Perceba que nesse caso não informamos o tipos para ele.
std::string ter = "Terminal ";
char * roo = "Root";
std::cout << std::plus<>{}( ter, roo ) << '\n'; // Terminal Root
Ahhh! Mas serve só pra somar ou concatenar? Não, ele é utilizado quando você precisa obter resultados dinâmicos e geralmente em conjunto com o std::transform
.
std::transform
std::transform( input1, ultimo_input1, input2, operacao );
Aplica a função dada a um intervalo e armazena o resultado em outro intervalo, mantendo a ordem dos elementos originais e começando do primeiro.
Suponhamos que você precisa somar todos os elementos do array1 com o array2, através da maneira genérica você faria:
int array1[] {1, 2, 3},
array2[] {4, 5, 6},
total_elem = sizeof(array1) / sizeof(array1[0]),
x[ total_elem ];
for (int i = 0; i < total_elem; i++) {
x[i] = array1[i] + array2[i];
}
for( auto y : x ){
std::cout << y << ' ';
} // 5 7 9
std::cout << '\n';
Agora otimizando seu código com std::transform
ficaria:
O
std::plus
como estamos dentro dostd::transform
não devemos informar o operado:{}
#include <iostream>
#include <algorithm> // para std::transform
int main(){
int array1[] {1, 2, 3},
array2[] {4, 5, 6},
total_elem = sizeof(array1) / sizeof(array1[0]),
x[ total_elem ];
for (int i = 0; i < total_elem; i++) {
x[i] = array1[i] + array2[i];
}
std::transform( array1, array1 + total_elem, array2, x, std::plus<int>() );
for( auto y : x ){
std::cout << y << ' ';
} // 5 7 9
std::cout << '\n';
return 0;
}
Like a Boss!
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: