map::insert, map::find, и map::end
Демонстрируется использование сопоставление:: insert,сопоставление:: найти, и сопоставление:: end Стандартные функции библиотеки стандартных шаблонов (STL) в Visual C++.
iterator map::end( );
iterator map::find(
const Key& Key
);
pair<iterator, bool>
map::insert(
const value_type& x
);
Заметки
Примечание |
---|
Имена класса и параметра в прототипе не соответствует версии в файле заголовка.Некоторые были изменены для улучшения удобочитаемости. |
End функция возвращает итератор эти элементы одно за пределами последовательности.найти возвращает итератор, задающий первый элемент, ключ сортировки равно ключ.Если такой элемент не существует, то равно итератора end.Если ключ еще не существует, то insert добавляет его в последовательности и возвратит pair<итератор" true>.Если ключ уже существует, insert не добавляет ее к последовательности и не возвращает pair <итератор" false>.Следующий пример создает сопоставление ints к СтрокаS.В этом случае сопоставление из цифр с их эквивалентами строки (1 - > "один", 2 - > "2" и т д).Программа считывает число от пользователя, находит число машинного слова для каждого числа (с использованием сопоставления), и введите число обратно в виде последовательности машинных слов.Например, если пользователь вводит 25463, то программа отвечает. 2 5 4 6 3.
Пример
// 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;
}
}
Ввод
12
q
Пример результатов выполнения
Enter "q" to quit, or enter a Number: 12
One Two
Enter "q" to quit, or enter a Number: q
Требования
заголовок:<сопоставление>