Um mapa no software é como uma matriz, mas é uma matriz com duas colunas em vez de uma. A primeira coluna tem as chaves e a segunda coluna tem os valores. Cada linha é um par, fazendo um par de chaves/valor. Uma chave está diretamente relacionada ao seu valor.
Um exemplo de um mapa é 'c', 30, 'b', 20, 'd', 30, 'e', 40, 'a', 10. O primeiro par de chave/valor inserido aqui é 'c', 3, onde 'c' é a chave e 30 é o valor. Este mapa não é ordenado por chaves. Encomendar este mapa por Keys produz 'a', 10, 'b', 20, 'c', 30, 'd', 30, 'e', 40. Observe que pode haver valores duplicados, mas não chaves duplicadas. Um mapa ordenado é um mapa ordenado por chaves.
Um multiset é para um conjunto, pois um multimap é para um mapa. Isso significa que existem mapas com chaves duplicadas. Um exemplo de um multimap é 'a', 10, 'b', 20, 'b', 20, 'c', 30, 'c', 30, 'd ', 30, ' e ', 40. E, como afirmado acima, este artigo não lida com o MultiMap, mas lida com a estrutura de dados C ++ chamada, mapa.
Em C ++, uma estrutura de dados é uma estrutura com propriedades (membros de dados) e métodos (funções membros). Os dados da estrutura são uma lista; um conjunto é uma lista; Um mapa é uma lista de pares de chave/valor.
Este artigo discute o básico de conjuntos e mapas em C ++ e, para entender melhor este artigo, o leitor deveria ter um conhecimento básico de C++.
Conteúdo do artigo:
Classe e seus objetos:
Em C ++, o conjunto, o mapa e outras estruturas semelhantes são chamadas de contêineres. Uma classe é uma unidade generalizada com membros de dados, que são variáveis e funções de membro que estão relacionadas. Quando os membros dos dados recebem valores, um objeto é formado. No entanto, um objeto é formado em um processo chamado, instanciação. Como uma classe pode levar a valores diferentes para as mesmas variáveis de membros de dados, objetos diferentes podem ser instanciados da mesma classe.
Em C ++, um conjunto inutilizável é uma classe, bem como um mapa inutilizável. Quando um objeto é instanciado do conjunto inutilizável ou do mapa inutilizável, o objeto se torna a estrutura de dados real. Com as estruturas de dados definidas e mapas, o principal membro de dados é uma lista. Bem, o conjunto e o mapa formam um grupo de contêineres chamados contêineres associativos ordenados. Conjunto não ordenado e o mapa não ordenado também existem, mas infelizmente não são abordados neste artigo.
Criando um conjunto ou um mapa:
Instantar um conjunto de sua classe Set está criando um conjunto; Instantar um mapa de sua classe de mapa está criando um mapa. O objeto assim criado recebe um nome da escolha do programador.
Para criar um conjunto, o programa deve começar com:
#incluirObserve a diretiva "#include", que inclui a biblioteca de conjuntos que possui a classe definida da qual as estruturas de dados definidas serão instantadas.
Para criar um mapa, o programa deve começar com:
#incluirObserve a diretiva "#include", que inclui a biblioteca de mapas que possui a classe de mapa a partir da qual as estruturas de dados do mapa serão instanciadas.
A sintaxe para criar um conjunto vazio é:
definirExemplo:
definirUm exemplo para criar um conjunto com conteúdo é:
definirA sintaxe para criar um mapa vazio é:
mapaExemplo:
mapaUm exemplo para criar um mapa com conteúdo é:
mapaBásicos do iterador:
Um iterador é um ponteiro elaborado, que pode ser usado para atravessar a lista da estrutura de dados do início ao fim.
A função BEGIN () MEMBRO
A função Begin () Membro retorna um iterador que aponta para o primeiro elemento da lista. O exemplo a seguir ilustra isso para o conjunto:
definirObserve o caminho BEGN () foi usado com SetoBJ e o operador de pontos. iter é o objeto de iter devolvido. Além disso, observe a maneira como foi declarada. * é o operador indiretivo. Como usado com o ITER, ele retorna o primeiro elemento do conjunto; O primeiro elemento é 2 em vez de 6 - veja a explicação abaixo.
O exemplo a seguir ilustra o uso da função Iniciar () para o mapa:
mapaObserve o caminho para começar () foi usado com o MAPOBJ e o operador DOT. iter é o objeto de iter devolvido. Além disso, observe a maneira como foi declarada. "Primeiro", como usado aqui, refere -se à chave. "Segundo" refere -se ao valor correspondente à chave. Observe como eles foram usados com o ITER para obter os componentes do elemento inicial da lista. O primeiro elemento é a, 10 em vez de c, 30 - veja a explicação abaixo.
A função de membro "Begin () const"
A função de membro “Begin () const” retorna um iterador que aponta para o primeiro elemento da lista quando a declaração do conjunto começa com const (para constante). Sob essa condição, o valor da lista, referido pelo iterador retornado, não pode ser alterado pelo iterador. O exemplo a seguir ilustra seu uso para o conjunto:
const definidoObserve o caminho BEGN () foi usado com SetoBJ e o operador de pontos. Nenhum "const" foi digitado logo após o começo (). No entanto, "const" precedeu a declaração. aqui está o objeto de iterador constante retornado, que é diferente do iterador normal. Além disso, observe a maneira como foi declarada. * é o operador indiretivo; Como usado com o ITER, ele retorna o primeiro elemento do conjunto. O primeiro elemento é 2 em vez de 6 - veja a explicação abaixo.
O exemplo a seguir ilustra o uso da função "BEGIN () const" para o mapa:
const mapObserve o caminho para começar () foi usado com o MAPOBJ e o operador DOT. Nenhum "const" foi digitado logo após o começo (). No entanto, "const" precedeu a declaração. aqui está o objeto de iterador constante retornado, que é diferente do iterador normal. Além disso, observe a maneira como foi declarada. "Primeiro", como usado aqui, refere -se à chave; "Segundo", como usado aqui, refere -se ao valor correspondente à chave. Observe como eles foram usados com o ITER para obter os componentes do elemento inicial da lista. O primeiro elemento é a, 10 em vez de c, 30 - veja a explicação abaixo.
A função final () do membro
A função final () do membro retorna um iterador que aponta logo após o final da lista. O exemplo a seguir ilustra isso para o conjunto:
definirObserve que a maneira final () foi usada com SetoBJ e o operador de pontos. iter é o objeto de iter devolvido. Além disso, observe a maneira como foi declarada. * é o operador indiretivo; Como usado com o ITER, ele retorna o último elemento+1 do conjunto. No computador do autor, este último elemento+1 é 5, que não está na lista. Então, cuidado para não usar este elemento.
O exemplo a seguir ilustra o uso da função final () para o mapa:
mapaObserve que a maneira final () foi usada com o MAPOBJ e o operador DOT. iter é o objeto de iter devolvido. Além disso, observe a maneira como foi declarada. * é o operador indiretivo; Como usado com o ITER, ele retorna o último elemento+1 do mapa. No computador do autor, este último elemento+1 é , 0, que não está na lista. Então, cuidado para não usar este elemento.
A função do membro "end () const"
A função de membro "end () const" retorna um iterador que aponta logo após o final da lista quando a declaração do conjunto começa com const (para constante). Sob essa condição, o valor da lista, referido pelo iterador retornado, não pode ser alterado pelo iterador. O exemplo a seguir ilustra seu uso para o conjunto:
const definidoObserve que a maneira final () foi usada com SetoBJ e o operador de pontos. Nenhum "const" foi digitado logo após o final (). No entanto, "const" precedeu a declaração. iter é o objeto de iter devolvido. Além disso, observe a maneira como foi declarada. * é o operador indiretivo; Como usado com o ITER, ele retorna o último elemento+1 do conjunto.
O exemplo a seguir ilustra o uso da função "end () const" para o mapa:
const mapObserve que a maneira final () foi usada com o MAPOBJ e o operador DOT. Nenhum "const" foi digitado logo após o final (). No entanto, "const" precedeu a declaração. Iter é o objeto de iterador constante retornado, que é diferente do iterador normal. Além disso, observe cuidadosamente a maneira como foi declarada.
Acesso ao elemento para conjunto e mapa:
Definir
Com o conjunto, o elemento é lido usando o operador de indireção. Os dois primeiros elementos de um conjunto são lidos no exemplo a seguir:
definirA saída é 2, seguida por 4 - veja a explicação abaixo. Para apontar para o próximo elemento da lista, o iterador é incrementado.
NOTA: Um elemento não pode ser alterado usando o operador de indireção para o conjunto. Por exemplo, "*iter = 9;" não é possível.
mapa
Um mapa consiste em pares de chave/valor. Um valor pode ser lido usando a chave correspondente e alterado usando a mesma chave. O seguinte segmento de código ilustra o seguinte:
mapaA saída é:
20O operador de pontos não foi usado aqui. Em vez.
Ordem dos elementos em um conjunto ou mapa:
Os elementos podem ser inseridos em um conjunto, em qualquer ordem. No entanto, uma vez inserido, o conjunto reorganiza seus elementos em ordem crescente. Ordem ascendente é a ordem padrão. Se for necessária uma ordem decrescente, o conjunto deverá ser declarado como no exemplo a seguir:
definirEntão, depois do tipo, e.g., Int, para o modelo, há uma vírgula, seguida de "maior" nos suportes de ângulo.
Os elementos podem ser inseridos em um mapa em qualquer ordem. No entanto, uma vez inserido, o mapa reajave seus elementos em ordem ascendente por chave (somente), mantendo a relação entre cada chave e seu valor. Ordem ascendente é a ordem padrão; Se for necessária uma ordem decrescente, o mapa deverá ser declarado como no exemplo a seguir:
mapaEntão, depois do par de tipos, e.g., “Char, int”, para o modelo, há uma vírgula, seguida de “maior” nos suportes de ângulo.
Atravessando um conjunto
O loop while ou o loop para o iterador pode ser usado para atravessar um conjunto. O exemplo a seguir usa um loop for para atravessar um conjunto que foi configurado em ordem decrescente:
definirA saída é:
10 8 6 4 2Incrementar um iterador aponta para o próximo elemento.
Atravessando um mapa
O loop while ou o loop com o iterador pode ser usado para atravessar um mapa. O exemplo a seguir usa um loop for para atravessar um mapa que foi configurado em ordem decrescente:
mapaA saída é:
e, 40, d, 30, c, 30, b, 20, a, 10,Incrementar um iterador aponta para o próximo elemento. "Primeiro", no código, refere -se à chave e "segundo" refere -se ao valor correspondente. Observe como esses valores foram obtidos para a saída.
Outras funções de membros comumente usadas:
A função size ()
Esta função retorna um número inteiro, que é o número de elementos na lista. Definir exemplo:
definirA saída é 5.
Exemplo de mapa:
mapaA saída é 5.
A função insert ()
o conjunto não permite duplicar. Portanto, qualquer inserido duplicado é rejeitado silenciosamente. Com o conjunto, o argumento da função insert () é o valor a ser inserido. O valor é montado em uma posição, na qual a ordem no conjunto permanece ascendente ou descendente. Exemplo:
definirA saída é:
2 4 6 8 9 10 12Nota: a função de membro insert () pode ser usada para preencher um conjunto vazio.
O mapa não permite duplicar por chave. Portanto, qualquer inserido duplicado é rejeitado silenciosamente. Com o mapa, o argumento para a função insert () é o par de chaves/valores no aparelho. O elemento é montado em uma posição por chave, na qual a ordem no mapa permanece ascendente ou descendente. Exemplo:
mapaA saída é:
a, 10, b, 20, c, 30, d, 30, e, 40, f, 50, g, 60,NOTA: A função de membro insert () pode ser usada para preencher um mapa vazio.
A função vazia ()
Esta função retorna true se a lista estiver vazia e falsa se o contrário. Definir exemplo:
definirA saída é 0 para false, o que significa que o conjunto aqui não está vazio.
Exemplo de mapa:
mapaA saída é 0 para falsa, o que significa que o mapa aqui não está vazio.
A função EASE ()
Considere o seguinte segmento de código:
definirA saída é:
Novo tamanho: 4A função EASE () leva um iterador que aponta para um elemento como um argumento. Depois de apagar o elemento, a função EASE () retorna um iterador que aponta para o próximo elemento.
Considere o seguinte segmento de código:
mapaA saída é:
Novo tamanho: 4A função EASE () leva um iterador que aponta para um elemento como um argumento. Depois de apagar o elemento, a função EASE () retorna um iterador que aponta para o próximo elemento.
A função clear ()
A função clear () remove todos os elementos da lista. Definir exemplo:
definirA saída é 0.
Exemplo de mapa:
mapaA saída é 0.
Conclusão:
Uma estrutura de dados definida em C ++ é uma estrutura na qual a lista de elementos é armazenada em ordem crescente por padrão ou em ordem decrescente pela escolha do programador. Todos os elementos do conjunto são únicos. Uma estrutura de dados do mapa em C ++ é uma estrutura na qual a lista é um hash de pares de chave/valor, armazenado em ordem crescente de chaves por padrão ou em ordem decrescente de chaves pela escolha do programador. As chaves também são únicas e pode haver valores duplicados. O principal membro de dados de qualquer uma das estruturas é a lista. Qualquer estrutura tem funções de membro, algumas das quais comumente usadas.