map::insert, map::find, e map::end
Ilustra como usar o map::insert, map::find, e map::end funções de biblioteca STL (Standard Template) no Visual C++.
iterator map::end( );
iterator map::find(
const Key& Key
);
pair<iterator, bool>
map::insert(
const value_type& x
);
Comentários
Observação |
---|
Nomes de classe/parâmetro o protótipo não coincidem com a versão no arquivo de cabeçalho.Alguns foram modificados para melhorar a legibilidade. |
O final função retorna um iterador que aponta um após o final de uma seqüência.encontrar retorna um iterador que designa o primeiro elemento é igual a chave cuja classificação chave.Se tal elemento não existir, o iterador é igual a final.Se a chave ainda não existir, Inserir irá adicioná-lo a seqüência e retornar pair<iterador, true>.Se a chave já existir, Inserir não o adiciona à seqüência e retorna pair <iterador, false>.O exemplo a seguir cria um mapa de ints para seqüência de caracteress.Nesse caso, o mapeamento é de dígitos para seus equivalentes de seqüência de caracteres (1 - > "Um", 2 - > "Dois", e assim por diante).O programa lê um número do usuário, localiza a palavra equivalente para cada dígito (usando o mapa) e imprime a parte de trás número como uma série de palavras.Por exemplo, se o usuário insere 25463, o programa responde com: dois cinco quatro seis três.
Exemplo
// map_insert_find_end.cpp
// compile with: /EHsc
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef map<int, string, less<int> > INT2STRING;
int main()
{
// 1. Create a map of ints to strings
INT2STRING theMap;
INT2STRING::iterator theIterator;
string theString = "";
unsigned int index;
// Fill it with the digits 0 - 9, each mapped to its string counterpart
// Note: value_type is a pair for maps...
theMap.insert(INT2STRING::value_type(0,"Zero"));
theMap.insert(INT2STRING::value_type(1,"One"));
theMap.insert(INT2STRING::value_type(2,"Two"));
theMap.insert(INT2STRING::value_type(3,"Three"));
theMap.insert(INT2STRING::value_type(4,"Four"));
theMap.insert(INT2STRING::value_type(5,"Five"));
theMap.insert(INT2STRING::value_type(6,"Six"));
theMap.insert(INT2STRING::value_type(7,"Seven"));
theMap.insert(INT2STRING::value_type(8,"Eight"));
theMap.insert(INT2STRING::value_type(9,"Nine"));
// Read a Number from the user and print it back as words
for( ; ; )
{
cout << "Enter \"q\" to quit, or enter a Number: ";
cin >> theString;
if (theString == "q")
break;
// extract each digit from the string, find its corresponding
// entry in the map (the word equivalent) and print it
for (index = 0; index < theString.length(); index++)
{
theIterator = theMap.find(theString[index] - '0');
if (theIterator != theMap.end() ) // is 0 - 9
cout << (*theIterator).second << " ";
else // some character other than 0 - 9
cout << "[err] ";
}
cout << endl;
}
}
Entrada
12
q
Saída de exemplo
Enter "q" to quit, or enter a Number: 12
One Two
Enter "q" to quit, or enter a Number: q
Requisitos
Cabeçalho: <map>