
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::setse 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::movePara 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: