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;
}