Usando chaves duplicadas com um multimap
UMA mapa fornece um método para trabalhar rapidamente com listas de dados de tal forma que pode aceder a cada elemento facilmente com uma chave. Usando um mapa é conveniente porque você pode acessar os itens em uma ordem aleatória. No entanto, cada chave deve ser exclusivo. Não é como se o seu aplicativo falhará se você atribuir um valor a uma cópia da chave - o duplicado irá simplesmente substituir o valor original. Aqui está um exemplo:
#incluir#incluir
Note-se que há realmente dois homens chamados Tom, mas eles têm esposas com nomes diferentes. Quando você executar este exemplo, você não obter o resultado esperado:
AmyHarriet
O valor original é perdido porque um mapa só pode ter uma chave chamada Tom. Você pode usar um multimap para superar este problema. UMA multimap tem a mesma premissa básica de permitir que você atribui valores com base em uma chave, mas a variável resultante pode ter entradas duplicadas. Aqui é um exemplo de um multimap que aborda a questão:
#incluir#incluir
Neste caso, você ainda criar um objeto contendo dois corda objectos, a primeira das quais é a chave. A inserir() função permite adicionar novas entradas casamentos. A técnica é diferente do uso de uma norma mapa, mas o resultado é o mesmo. Cada entrada consiste em dois corda valores.
Para exibir as entradas, você deve trabalhar com iteradores. O exemplo mostra duas abordagens que você pode usar. As primeiras listas de todas as entradas em casamentos. Ela começa com a criação de uma iteração que aponta para o início das uniões utilizando o marriages.begin () função. O loop continua enquanto valores não é igual marriages.end (). Observe a notação de prefixo usado para atualizar valores para a próxima entrada na lista. Também é importante notar que valores fornece um ponteiro para os dados, para que você deve usar (* Valores) .Em primeiro lugar para acessar a primeira corda na entrada ou Valores-> primeira.
UMA multimap é realmente muito flexível. Você pode contar o número de entradas de chave duplicados usando o contagem() função. Para utilizar esta função, você deve fornecer o valor de chave que deseja localizar. o encontrar() função torna possível a criação de um iterador que contém apenas as entradas para uma chave específica. O exemplo mostra uma técnica para a iteração através dos valores que você encontrar. A saída deste exemplo tem esta aparência:
Harry é casado com HarrietTom é casada com SuzyTom é casada com AmyWomen Casado com homens chamados TomSuzyAmy