Podemos perceber algumas vantagens:
1 – Não precisamos retirar elementos repetidos de um grupo de dados porque ele mesmo já faz isso.
2 – A todo momento temos o conjunto de dados ordenado, sendo assim, não é necessário fazer nenhum tipo de ordenação.
Algumas desvantagens:
1 – Não usamos em problemas que necessitamos de valores repetidos.
2 – Existe um custo em manter sempre esse conjunto de dados ordenados e precisamos sempre analisar um pouco se vale a pena ou não.
Eu sempre posso/quero perder os dados repetidos ?
Não, as vezes precisamos guardar todos, nesses casos podemos usar o multiset.
Como o nome diz ele permite múltiplos dados, ele guardará elementos repetidos em posições diferentes.
O multiset mantém os dados ordenados assim como o set, e como ele permite dados repetidos esse dados sempre aparecerão em posições adjacentes no vetor.
Obs: Nos códigos (Troque as " (aspas) por < >):
Exemplo de inserção:
#include "iostream"
#include "set"
using namespace std;
int main () {
set"int" myset;
// set some initial values:
for (int i=5; i>=1; i--)
myset.insert(i*10); // set: 50 40 30 20 10
}
Exemplo de impressão:
#include "iostream"
#include "set"
using namespace std;
int main () {
set"int" myset;
set"int"::iterator it; // é um iterador do tipo set"int", ele serve para se percorrer um set de inteiros
printf ("myset contains:“);
//Neste for percorremos de myset.begin() que é o início
//até myset.end() que é o final do set
for (it=myset.begin(); it!=myset.end(); it++){
//O it é um ponteiro então para acessar seu valor usamos *it.
printf(“%d ”, *it);
}
}
Não deixe de conferir como usar o map!