
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 RootAhhh! 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::pluscomo estamos dentro dostd::transformnã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: