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::visit
O 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++ !