map::insert, map::find, i map::end
Ilustruje sposób użycia map::insert, map::find, i map::end funkcje biblioteki szablon standardowy (STL) w programie Visual C++.
iterator map::end( );
iterator map::find(
const Key& Key
);
pair<iterator, bool>
map::insert(
const value_type& x
);
Uwagi
[!UWAGA]
Nazwy klasy/parametr w prototyp nie pasują do wersji w pliku nagłówkowym.Niektóre zostały zmodyfikowane w celu poprawienia czytelności.
End funkcja zwraca iterację, wskazujący koniec sekwencji.Znajdź zwraca iterację, który wyznacza pierwszy element, którego równa się do kluczy sortowania klucz.Jeśli element nie istnieje, jest równa iteratora end.Jeśli klucz już istnieje, wstawić będzie dodać go do sekwencji i zwraca pair<iteratora, true>.Jeśli klucz już istnieje, wstawić nie powoduje dodania do sekwencji i zwraca pair <iteratora, false>.Poniższy przykład tworzy mapę z ints, aby strings.W przypadku mapowania jest od cyfr na ich odpowiedniki ciągu (1 - > "Jeden", 2 - > "Dwa" i tak dalej).Program odczytuje liczbę od użytkownika, znajdzie wyraz równoważne dla każdej cyfry (za pomocą mapy) i drukuje numer back jako seria wyrazów.Na przykład, jeśli użytkownik wprowadzi 25463, program reaguje z: dwa pięciu cztery sześciu trzy.
Przykład
// 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;
}
}
Dane wejściowe
12
q
Przykładowe dane wyjściowe
Enter "q" to quit, or enter a Number: 12
One Two
Enter "q" to quit, or enter a Number: q
Wymagania
Nagłówek: <map>