Compartilhar via


Classe set

O conjunto de classes de contêiner da STL é usado para o armazenamento e a recuperação de dados de uma coleção na qual os valores dos elementos contidos são exclusivos e funcionam como os valores de chave, de acordo com os quais os dados são automaticamente ordenados. O valor de um elemento em um conjunto não pode ser alterado diretamente. Em vez disso, você deve excluir valores antigos e inserir elementos com novos valores.

template <
    class Key, 
    class Traits=less<Key>, 
    class Allocator=allocator<Key> 
>
class set

Parâmetros

  • Key
    O tipo de dados do elemento a ser armazenado no conjunto.

  • Traits
    O tipo que fornece um objeto de função que pode comparar dois valores de elemento como chaves de classificação para determinar sua ordem relativa no conjunto. Esse argumento é opcional e o predicado binário less <Key> é o valor padrão.

  • Allocator
    O tipo que representa o objeto de alocador armazenado que encapsula detalhes sobre a alocação e a desalocação do conjunto da memória. Esse argumento é opcional e o valor padrão é allocator*<Key>.*

Comentários

Um conjunto da STL é:

  • Um contêiner associativo, que é um contêiner de tamanho variável que oferece suporte à recuperação eficiente dos valores de elemento com base em um valor de chave associado. Além disso, é um contêiner associativo simples, pois seus valores de elemento são seus valores de chave.

  • Reversível, pois fornece um iterador bidirecional para acessar seus elementos.

  • Classificada, pois seus elementos são ordenados por valores de chave no contêiner, de acordo com uma função de comparação especificada.

  • Exclusivo no sentido de que cada um de seus elementos deve ter uma chave exclusiva. Uma vez que o conjunto também é um contêiner associativo simples, seus elementos também são exclusivos.

Um conjunto também é descrito como uma classe de modelo, pois a funcionalidade fornecida por ele é genérica e independente do tipo de dados específico contido como elementos. O tipo de dados a ser usado é especificado como um parâmetro no modelo de classe juntamente com a função de comparação e o alocador.

A escolha do tipo de contêiner deve se basear, de modo geral, no tipo de pesquisa e inserção exigido pelo aplicativo. Os contêineres associativos são otimizados para as operações de pesquisa, inserção e remoção. As funções membro que oferecem suporte explicitamente a essas operações são eficientes, executando-as em um tempo que está na média proporcional para o logaritmo do número de elementos no contêiner. A inserção de elementos não invalida iteradores e a remoção de elementos invalida apenas os iteradores que apontavam especificamente os elementos removidos.

O conjunto deve ser o contêiner associativo escolhido quando as condições que associam os valores às respectivas chaves forem atendidas pelo aplicativo. Os elementos de um conjunto são exclusivos e servem como suas próprias chaves de classificação. Um modelo para esse tipo de estrutura é uma lista ordenada de palavras, por exemplo, na qual as palavras podem ocorrer apenas uma vez. Se não foram permitidas as várias ocorrências das palavras, um multiset seria a estrutura de contêiner apropriada. Se for preciso anexar valores a uma lista de palavras-chave exclusivas, um mapa será uma estrutura apropriada para conter esses dados. Se, em vez disso, as chaves não forem exclusivas, um multimapa será o contêiner ideal.

O conjunto ordena a sequência que controla chamando um objeto de função armazenado do tipo key_compare. Esse objeto armazenado é uma função de comparação que pode ser acessada chamando a função membro key_comp. De modo geral, os elementos precisam ser simplesmente menores que os comparáveis para estabelecer essa ordem, de modo que, considerando dois elementos quaisquer, pode ser determinado que, ou eles são equivalentes (no sentido de que nenhum deles é menor que o outro), ou que um é menor que o outro. Isso resulta em uma ordenação entre os elementos não equivalentes. Fazendo uma observação mais técnica, a função de comparação é um predicado binário que induz a uma ordenação fraca restrita no sentido matemático padrão. Um predicado binário f(x,y) é um objeto de função que possui dois objetos de argumento x e y e um valor de retorno de true ou false. Uma ordenação imposta em um conjunto será uma ordenação fraca restrita se o predicado binário for irreflexivo, antissimétrico e transitivo, e se a equivalência for transitiva, onde dois objetos x e y são definidos para serem equivalentes quando ambos, f(x,y) e f(y,x) são falsos. Se a condição mais forte de igualdade entre as chaves substituir essa equivalência, a ordenação será total (no sentido de que todos os elementos serão ordenados um em relação ao outro) e as chaves correspondentes não poderão ser diferenciadas uma da outra.

O iterador fornecido pela classe de conjunto é um iterador bidirecional, mas as funções membro de classe insert e set possuem versões que usam como parâmetros de modelo um iterador de entrada mais fraco, cujos requisitos de funcionalidade são mais minimalistas do que os garantidos pela classe de iteradores bidirecionais. Os conceitos de iterador diferente formam uma família relacionada por refinamentos em sua funcionalidade. Cada conceito de iterador tem seu próprio conjunto de requisitos e os algoritmos que funcionam com eles devem limitar suas suposições para os requisitos fornecidos por esse tipo de iterador. Pode ser pressuposto que um iterador de entrada possa ser desreferenciado para fazer referência a algum objeto e que possa ser incrementado para o próximo iterador na sequência. Esse é um conjunto mínimo de funcionalidade, mas é suficiente para poder expressar de forma significativa um intervalo de iteradores [First, Last) no contexto de funções membro da classe.

Construtores

set

Constrói um conjunto que está vazio ou que é uma cópia de todo ou parte de algum outro conjunto.

Typedefs

allocator_type

Um tipo que representa a classe allocator para o objeto de conjunto.

const_iterator

Um tipo que fornece um iterador bidirecional que pode ler um elemento const no conjunto.

const_pointer

Um tipo que fornece um ponteiro para um elemento const em um conjunto.

const_reference

Um tipo que fornece uma referência para um elemento const armazenado em um conjunto para leitura e execução de operações const.

const_reverse_iterator

Um tipo que fornece um iterador bidirecional que pode ler qualquer elemento const no conjunto.

difference_type

Um tipo de inteiro com sinal que pode ser usado para representar o número de elementos de um conjunto em um intervalo entre os elementos apontado pelos iteradores.

iterator

Um tipo que fornece um iterador bidirecional que pode ler ou modificar qualquer elemento em um conjunto.

key_compare

Um tipo que fornece um objeto de função que pode comparar duas chaves de classificação para determinar a ordem relativa de dois elementos no conjunto.

key_type

O tipo descreve um objeto armazenado como um elemento de um conjunto em sua capacidade como chave de classificação.

pointer

Um tipo que fornece um ponteiro para um elemento em um conjunto.

reference

Um tipo que fornece uma referência a um elemento armazenado em um conjunto.

reverse_iterator

Um tipo que fornece um iterador bidirecional que pode ler ou modificar um elemento em um conjunto invertido.

size_type

Um tipo de inteiro sem sinal que pode representar o número de elementos em um conjunto.

value_compare

O tipo que fornece um objeto de função que pode comparar dois elementos para determinar sua ordem relativa no conjunto.

value_type

O tipo descreve um objeto armazenado como um elemento de um conjunto em sua capacidade como um valor.

Funções membro

begin

Retorna um iterador que trata o primeiro elemento no conjunto.

cbegin

Retorna um iterador const que trata o primeiro elemento no conjunto.

cend

Retorna um iterador const que trata o local após o último elemento em um conjunto.

clear

Apaga todos os elementos de um conjunto.

count

Retorna o número de elementos em um conjunto cuja chave corresponde a uma chave especificada pelo parâmetro.

crbegin

Retorna um iterador const que trata o primeiro elemento em um conjunto invertido.

crend

Retorna um iterador const que trata o local após o último elemento em um conjunto invertido.

emplace

Insere um elemento construído adequadamente em um conjunto.

emplace_hint

Insere um elemento construído adequadamente em um conjunto, com uma dica de posicionamento.

empty

Testa se um conjunto está vazio.

end

Retorna um iterador que trata o local após o último elemento em um conjunto.

equal_range

Retorna um par de iteradores respectivamente para o primeiro elemento em um conjunto com uma chave que é maior do que uma chave especificada e para o primeiro elemento no conjunto com uma chave igual ou maior que a chave.

erase

Remove um elemento ou um intervalo de elementos em um conjunto das posições especificadas ou remove elementos que correspondem a uma chave especificada.

find

Retorna um iterador que trata o local de um elemento em um conjunto que tem uma chave equivalente a uma chave especificada.

get_allocator

Retorna uma cópia do objeto allocator usada para construir o conjunto.

insert

Insere um elemento ou um intervalo de elementos em um conjunto.

key_comp

Recupera uma cópia do objeto de comparação usada para ordenar chaves em um conjunto.

lower_bound

Retorna um iterador para o primeiro elemento em um conjunto com uma chave que é igual ou maior que uma chave especificada.

max_size

Retorna o comprimento máximo do conjunto.

rbegin

Retorna um iterador que trata o primeiro elemento em um conjunto invertido.

rend

Retorna um iterador que trata o local após o último elemento em um conjunto invertido.

size

Retorna o número de elementos no conjunto.

swap

Troca os elementos de dois conjuntos.

upper_bound

Retorna um iterador para o primeiro elemento em um conjunto com uma chave que é maior que uma chave especificada.

value_comp

Recupera uma cópia do objeto de comparação usada para ordenar valores de elemento em um conjunto.

Operadores

operator=

Substitui os elementos de um conjunto por uma cópia de outro conjunto.

Requisitos

Cabeçalho: <set>

Namespace: std

Consulte também

Referência

<set>

Segurança de threads na Biblioteca Padrão C++

Biblioteca de Modelos Padrão

Conceitos

Contêineres