
No capítulo anterior vimos conceitos de std::sort e std::greater . Vamos trabalhar aquele exemplo do std::sort que usamos sem o terceiro parâmetro com std::less_equal para obtermos um array em ordem crescente.
std::less_equals é uma classe de objeto de função usada para realizar comparações. É definido como uma classe de objeto de função para comparação inferior a igualdade que retorna um valor booleano dependendo da condição.Ou seja, basta usar o mesmo exemplo para ordenarmos de forma crescente:
Exemplo:
#include <iostream>
#include <algorithm>
int main(){
int array[] = {11, 2, 9, 17, 12, 89, 13, 2, 52, 8, 4, 79},
length = sizeof( array ) / sizeof( array[0] );
std::sort( array, array + length, std::less_equal<int>() );
for ( auto nums : array ) {
std::cout << nums << ' ';
}
std::cout << '\n';
return 0;
}Saída:
2 4 8 9 11 12 13 17 52 79 89
Simples de entender, né?! Ou seja coloca em ordem do menor ou igual
std::variant e std::visitO std::variant é como o próprio nome supõe, o tipo pode variar, não é igual à usar auto(precisa inicializar e não é possível alterar o tipo). Ou seja, com std::variant você pode dizer que a variável var poder ser: int, std::string, char *,…
Já o std::visit é a forma que vamos manipular esse dado entregue pela std::variant, ou seja, quando você cria uma função ela tem um tipo de retorno, logo, o std::visit quase a mesma ideia diretamente ligada ao polimosfismo. Ela é geralmente usada em conjunto com expressões lambda .
Exemplo: Criar uma variável e passar o valor dela para uma função, nesse caso: lambda.
#include <iostream>
#include <variant> // para usar o std::variant
int main(){
std::variant<int, std::string, char *> var;
var = "Eu sou uma string!";
std::visit( []( auto &e ) {
std::cout << e << '\n';
}, var );
var = 936;
visit( []( auto &e ) {
std::cout << e << '\n';
}, var );
var = "Agora eu sou um char ponteiro.";
visit( []( auto &e ) {
std::cout << e << '\n';
}, var );
return 0;
}Algumas coisas para analisar no código acima:
std::variant;var: int, std::string e char *;std::visit pode ser opcional: ora usei: std::visit e outrora somente: visit;
Bom, para uma análise rápida e de fácil compreensão é isso! Caso queira se aprofundar ainda mais sugiro esses links: std::less_equal, std::variant e std::visit .
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !