Compartilhar via


Classe map

Usado para o armazenamento e a recuperação de dados de uma coleção em que cada elemento é um par que contém um valor de dados e uma chave de classificação. O valor da chave é exclusivo e usado para classificar os dados automaticamente.

O valor de um elemento em um mapa pode ser alterado diretamente. O valor de chave é uma constante e não pode ser alterado. Em vez disso, os valores de chave associados aos elementos antigos devem ser excluídos e os novos valores de chave devem ser inseridos para novos elementos.

template <
   class Key, 
   class Type, 
   class Traits = less<Key>, 
   class Allocator=allocator<pair <const Key, Type> > 
> class map;

Parâmetros

  • Key
    O tipo de dados da chave a ser armazenado no mapa.

  • Type
    O tipo de dados do elemento a ser armazenado no mapa.

  • 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 mapa. 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 mapa da memória. Esse argumento é opcional e o valor padrão é allocator<pair <constKey*,* Type> >.

Comentários

A classe de mapa da STL (Biblioteca de Modelos Padrão) é:

  • Um contêiner de tamanho variável que recupera com eficiência valores de elemento com base em valores de chave associados.

  • Reversível, pois fornece iteradores bidirecionais para acessar seus elementos.

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

  • Exclusiva, pois cada um de seus elementos deve ter uma chave exclusiva.

  • Um contêiner de par associativo, pois seus valores de dados de elemento são distintos de seus valores de chave.

  • Uma classe de modelo, pois a funcionalidade fornecida por ela é genérica e independente do tipo de chave ou elemento. Os tipos de dados usados para elementos e chaves são especificados como parâmetros no modelo de classe juntamente com o alocador e a função de comparação.

O iterador fornecido pela classe de mapa é um iterador bidirecional, mas as funções membro de classe insert e map possuem versões que usam como parâmetros de modelo um iterador de entrada mais fraco, com menos requisitos de funcionalidade do que os garantidos pela classe de iteradores bidirecionais. Os conceitos de iterador diferente são relacionados por refinamentos em sua funcionalidade. Cada conceito de iterador tem seu próprio conjunto de requisitos e os algoritmos que funcionam com ele devem ser limitados por esses requisitos. Um iterador de entrada pode ser desreferenciado para fazer referência a algum objeto e pode se incrementado para o próximo iterador na sequência.

É recomendável basear a escolha do tipo de contêiner no tipo de pesquisa e inserção que é 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 as executam, na pior das hipóteses, em um tempo 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 para os elementos removidos.

É recomendável fazer o mapa do contêiner associativo escolhido quando as condições que associam os valores às chaves forem atendidas pelo aplicativo. Um modelo para esse tipo de estrutura é uma lista ordenada de palavras-chave que ocorrem uma única vez e que tenham valores de cadeia de caracteres associados que forneçam definições. Se uma palavra tiver mais de uma definição correta, essa chave não será exclusiva, de modo que um multimapa seria um contêiner melhor. Se apenas a lista de palavras estiver sendo armazenada, um conjunto será o contêiner apropriado. Se forem permitidas várias ocorrências das palavras, um multiset será mais adequado.

O mapa ordena os elementos que controla chamando um objeto de função armazenado do tipo key_compare. Esse objeto armazenado é uma função de comparação que é acessada chamando o método key_comp. De modo geral, dois elementos determinados são comparados para saber se um é menor que o outro ou se são equivalentes. Como todos os elementos são comparados, é criada uma sequência ordenada de elementos não equivalentes.

Dica

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 false.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.

Membros

Construtores

map

Constrói uma lista de um tamanho específico, ou com elementos de um valor específico, ou com um allocator específico, ou como uma cópia de algum outro mapa.

Typedefs

allocator_type

Um typedef para a classe allocator do mapa.

const_iterator

Um typedef para um iterador bidirecional que pode ler um elemento const no mapa.

const_pointer

Um typedef de um ponteiro para um elemento const em um mapa.

const_reference

Um typedef de uma referência para um elemento const armazenado em um mapa 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 mapa.

difference_type

Um typedef de inteiro com sinal para o número de elementos de um mapa em um intervalo entre os elementos apontado pelos iteradores.

iterator

Um typedef para um iterador bidirecional que pode ler ou modificar qualquer elemento em um mapa.

key_compare

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

key_type

Um typedef para a chave de classificação armazenada em cada elemento do mapa.

mapped_type

Um typedef para os dados armazenados em cada elemento de um mapa.

pointer

Um typedef de um ponteiro para um elemento const em um mapa.

reference

Um typedef de uma referência para um elemento armazenado em um mapa.

reverse_iterator

Um typedef para um iterador bidirecional que pode ler ou modificar um elemento em um mapa invertido.

size_type

Um typedef de inteiro não assinado para o número de elementos em um mapa

value_type

Um typedef para o tipo de objeto armazenado como um elemento em um mapa.

Funções membro

at

Localiza um elemento com um valor de chave especificado.

begin

Retorna um iterador que aponta para o primeiro elemento no mapa.

cbegin

Retorna um iterador const que aponta para o primeiro elemento no mapa.

cend

Retorna um iterador const que ultrapassa o fim.

clear

Apaga todos os elementos de um mapa.

count

Retorna o número de elementos em um mapa cuja chave corresponde à chave especificada em um parâmetro.

crbegin

Retorna um iterador const que aponta para o primeiro elemento em um mapa invertido.

crend

Retorna um iterador const que aponta para o local após o último elemento em um mapa invertido.

emplace

Insere um elemento construído adequadamente no mapa.

emplace_hint

Insere um elemento construído adequadamente no mapa, com uma dica de posicionamento.

empty

Retornará true se um mapa estiver vazio.

end

Retorna o iterador que ultrapassa o fim.

equal_range

Retorna um par de iteradores. O primeiro iterador no par aponta para o primeiro elemento em um map com uma chave que é maior que uma chave especificada. O segundo iterador no par aponta para o primeiro elemento no map com uma chave que é igual ou maior que a chave.

erase

Remove das posições especificadas um elemento ou um intervalo de elementos em uma mapa.

find

Retorna um iterador que aponta para o local de um elemento em um mapa que tem uma chave igual a uma chave especificada.

get_allocator

Retorna uma cópia do objeto allocator que é usada para construir o mapa.

insert

Insere em uma posição especificada um elemento ou um intervalo de elementos em uma mapa.

key_comp

Retorna uma cópia do objeto de comparação que é usada para ordenar chaves em um mapa.

lower_bound

Retorna um iterador para o primeiro elemento em um mapa que tem um valor de chave que é igual ou maior que uma chave especificada.

max_size

Retorna o comprimento máximo do mapa.

rbegin

Retorna um iterador que aponta para o primeiro elemento em um mapa invertido.

rend

Retorna um iterador que aponta para o local após o último elemento em um mapa invertido.

size

Retorna o número de elementos no mapa.

swap

Troca os elementos de dois mapas.

upper_bound

Retorna um iterador para o primeiro elemento em um mapa que tem um valor de chave que é maior que uma chave especificada.

value_comp

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

Operadores

operator[]

Insere um elemento em um mapa com um valor de chave especificado.

operator=

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

Requisitos

Cabeçalho: <map>

Namespace: std

Consulte também

Referência

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

Biblioteca de Modelos Padrão

Conceitos

Contêineres

Outros recursos

<map> Membros