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!