Conjuntos em C++
Definir (definir) — é um contêiner que classifica automaticamente os elementos adicionados em ordem crescente. Mas ao adicionar valores idênticos, set armazenará apenas uma instância dele (multiset - multiset- pode conter duplicatas). Quando um novo elemento é adicionado ao conjunto, ele imediatamente se encaixa para não violar a ordem de classificação.
Os conjuntos em C++ são definidos na biblioteca de modelos padrão STL por meio da classe set (multiset).
Conjuntos são árvores rubro-negras binárias. As operações de pesquisa, exclusão e inserção têm complexidade logarítmica.
Para usar conjuntos, você precisa incluir a biblioteca “
set”:
#include <definir>
Declaração de conjunto:
definir<int> meuSet; // Declarando um conjunto vazio.
conjunto múltiplo<int> meuSet; // Declarando um multiset vazio.
Funções para trabalhar com um conjunto (conjunto)
empty() - verifica a ausência de elementos no container
size() - Retorna o número de elementos no container
clear() - Limpa o container
insert() - Insere elementos
erase() - Remove elementos
count() - Retorna o número de elementos correspondentes a uma determinada chave
find() - Localiza um elemento com uma chave específica
lower_bound() - Retorna um iterador para o primeiro elemento não inferior ao valor fornecido
upper_bound() - Retorna um iterador para o primeiro elemento maior que o valor especificado
Exemplo de conjunto e multiconjunto
#include <iostream>
#include <definir>
usando namespace std;
int main()
{
definir<int> meuSet1; // declarou um conjunto vazio
conjunto múltiplo<int> meuSet2; // declarou um multiset vazio
// adiciona elementos ao conjunto
mySet1.insert(1);
mySet1.insert(2);
mySet1.insert(3);
mySet1.insert(1);
// adiciona elementos ao multiset
mySet2.insert(1);
mySet2.insert(2);
mySet2.insert(3);
mySet2.insert(1);
set<int>::iterator it; //cria um iterador
for(it = mySet1.begin(); it != mySet1.end(); it++) { // Mostra todos os elementos
cout << (*it) << " "; // conjuntos
}
cout << endl;
for(it = mySet2.begin(); it != mySet2.end(); it++) { // Saída de todos os elementos
cout << (*it) << " "; // multiconjuntos
}
retorna 0;
}