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

Usando set com um comparador
Um exemplo de comparador para criar um conjunto ordenado em ordem decrescente. estrutura cmp { bool operator() ( int a, int b) const{ retornar um > b; } };
Usando um comparador ao criar um conjunto. definir <int, cmp> s;