Compartilhar via


Contêineres STL

A biblioteca STL (Standard Template) fornece vários recipientes para armazenar coleções de objetos relacionados.Os recipientes são todas as classes de modelo, permitindo que você especifique quais objetos são permitidos nos recipientes.Este tópico fornece uma visão geral dos contêineres STL para ajudá-lo a decidir qual o contêiner é melhor às suas necessidades.

Existem duas bibliotecas STL para escolher: nativo STL e STL/CLR.Para obter mais informações sobre a STL/CLR, consulte Referência da biblioteca STL/CLR..

Recipientes de STL podem ser divididos em três categorias, recipientes de seqüência, recipientes associativas e adaptadores de contêiner.Essas categorias e as coleções que pertencem a cada categoria, estão resumidas aqui.Informações mais detalhadas podem ser encontradas na documentação de referência para os recipientes.

Recipientes de seqüência

Recipientes de seqüência mantém a ordem original dos elementos inseridos.Isso permite que você especifique onde inserir o elemento no recipiente.

O deque recipiente (fila dupla) permite a rápida inserções e exclusões no início e no final do recipiente.Também aleatoriamente, você pode acessar qualquer elemento rapidamente.

O list contêiner permite rápidas inserções e exclusões em qualquer lugar no recipiente, mas aleatoriamente, você não pode acessar um elemento no recipiente.

O vector contêiner se comporta como uma matriz, mas aumentará automaticamente conforme necessário.

Para obter mais informações sobre os recipientes de seqüência, consulte a tabela a seguir:

Recipiente

STL nativo

STL/CLR.

deque

deque Class

deque (STL/CLR)

list

list Class

lista (STL/CLR)

vector

vector Class

vetor (STL/CLR)

Recipientes associativas

A característica de definição de recipientes associativas é que os elementos são inseridos em uma predefinidos ordem, como são classificada em ordem crescente.

Os recipientes associativas podem ser agrupados em dois subconjuntos: mapas e define.A map, às vezes conhecido como um dicionário, consiste em um par chave/valor.A chave é usada para ordenar a seqüência e o valor de alguma forma está associado com essa chave.Por exemplo, um map pode conter chaves que representa todas as palavras exclusiva em um texto e valores que representam o número de vezes que a palavra aparece no texto.A set é simplesmente um recipiente crescente dos elementos exclusivos.

Ambos map e set permitir apenas uma instância de uma chave ou um elemento a ser inserido no contêiner.Se várias instâncias dos elementos forem necessárias, use multimap ou multiset.

Tanto mapeia e define os iteradores bidirecional de suporte.Para obter mais informações sobre os iteradores, consulte Iterators.

Enquanto não oficialmente parte do padrão STL, hash_map e hash_set são comumente usados para melhorar os tempos de pesquisando.Esses contêineres armazenam seus elementos, como uma tabela de hash, com cada entrada da tabela contendo uma lista vinculada de bidirecional de elementos.Para garantir os tempos de pesquisa mais rápidos, certifique-se de que o algoritmo de hash para seus elementos retorna valores de hash distribuído uniformemente.

Para obter mais informações sobre os recipientes associativas, consulte a tabela a seguir:

Recipiente

STL nativo

STL/CLR.

hash_map

hash_map Class

hash_map (STL/CLR)

hash_multimap

hash_multimap Class

hash_multimap (STL/CLR)

hash_multiset

hash_multiset Class

hash_multiset (STL/CLR)

hash_set

hash_set Class

hash_set (STL/CLR)

map

map Class

mapa (STL/CLR)

multimap

multimap Class

vários mapeamentos (STL/CLR)

multiset

multiset Class

multiset (STL/CLR)

set

set Class

conjunto (STL/CLR)

Adaptadores de contêiner

Os adaptadores de recipiente são simplesmente variações dos contêineres acima.Os adaptadores de contêiner não oferecem suporte a iteradores.

O priority_queue recipiente organizados de tal forma que o elemento com o valor mais alto é sempre o primeiro na fila.

O queue recipiente segue a semântica de FIFO (primeiro a entrar, primeiro a sair).O primeiro elemento inserido (empurrado) a fila é a primeira a ser removido (exibido).

O stack recipiente segue a semântica UEPS (último a entrar, primeiro a sair).O último elemento a ser inserido (colocado) na pilha é o primeiro elemento a ser removido (exibido).

Uma vez que os adaptadores de contêiner não oferecem suporte a iteradores, não pode ser usados com os algoritmos da STL.Para obter mais informações sobre algoritmos, consulte Algorithms.

Para obter mais informações sobre os adaptadores de recipiente, consulte a tabela a seguir:

Recipiente

STL nativo

STL/CLR.

priority_queue

priority_queue Class

priority_queue (STL/CLR)

queue

queue Class

fila (STL/CLR)

stack

stack Class

pilha (STL/CLR)

Requisitos para elementos de contêiner

Elementos inseridos em um recipiente STL podem ser de qualquer tipo de objeto que fornece um construtor público, um Destrutor público e um operador de atribuição pública.O destruidor não pode lançar uma exceção.Além disso, recipientes associativas como set e map deve ter um operador de comparação de público definido, que é o operador < Por padrão.Algumas operações nos recipientes também podem exigir um construtor público padrão e um operador de equivalência pública.

Acessando elementos de contêiner

Os elementos de contêineres são acessados usando iteradores.Para obter mais informações, consulte Iterators.

ObservaçãoObservação

Você também pode usar para cada um, no para iterar em coleções de STL.Para obter mais informações, consulte Como: iterar sobre a coleta de STL com para cada.

Consulte também

Referência

Standard Template Library

<sample container>