std::set
É um tipo de contêiner associativo em que cada elemento deve ser único. O valor do elemento não pode ser modificado depois de adicionado ao conjunto, embora seja possível remover e adicionar o valor modificado desse elemento.
Exemplo:
#include <iostream>
#include <set>
int main(){
std::set<int> s;
// adicionando elementos ao set
s.insert( 11 );
s.insert( 13 );
s.insert( 17 );
s.insert( 8 );
// Imprime todos elementos do set
// Vai imprimir do maior para o menor por padrão
for( auto z : s ){
std::cout << z << ' ';
}
std::cout << '\n';
// remove elementos do set
s.erase( 8 );
s.erase( 13 );
// Imprime todos elementos do set após remoção de alguns
for( auto z : s ){
std::cout << z << ' ';
}
std::cout << '\n';
return 0;
}
std::multiset
É similar ao std::set
, mas armazena elementos duplicados, exemplo:
Com
std::set
se duplicarmos os números assim:
#include <iostream>
#include <set>
int main(){
std::set<int> s;
s.insert( 11 );
s.insert( 13 );
s.insert( 17 );
s.insert( 8 );
s.insert( 11 );
s.insert( 13 );
s.insert( 17 );
s.insert( 8 );
for( auto z : s ){
std::cout << z << ' ';
}
std::cout << '\n';
return 0;
}
A saída será:
8 11 13 17
, ou seja, não sairá duplicada.
Mas se usarmos std::multiset
, assim:
#include <iostream>
#include <set>
int main(){
std::multiset<int> m;
m.insert( 11 );
m.insert( 13 );
m.insert( 17 );
m.insert( 8 );
m.insert( 11 );
m.insert( 13 );
m.insert( 17 );
m.insert( 8 );
for( auto z : m ){
std::cout << z << ' ';
}
std::cout << '\n';
return 0;
}
A saída será:
8 8 11 11 13 13 17 17
std::move
Para entender std::move
vamos lembrar daquele cpp::daily que trocamos os valores das variáveis com std::swap .
Na verdade aquilo foi possível usando uma variável temporária, então aquilo teve cópia na memória do valor. Já com std::move
a troca é realmente feita sem fazer cópia, exemplo baseado naquele:
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
Isso tem um melhor desempenho que aquele exemplo.
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: