Читать «C++: базовый курс» онлайн - страница 316
Herbert Schildt
return 0;
}
Обратите внимание на использование шаблонного класса
После инициализации отображения ключами и значениями можно выполнять поиск значения по заданному ключу, используя функцию
В предыдущем примере пары "ключ-значение" создавались явным образом с помощью шаблона
m.insert(make_pair((char) ('А'+i), i));
Здесь, как видите, выполняется операция приведения к типу
Хранение в отображении объектов класса
Подобно всем другим контейнерам, отображение можно использовать для хранения объектов создаваемых вами типов. Например, следующая программа создает простой словарь на основе отображения слов с их значениями. Но сначала она создает два класса
// Использование отображения для создания словаря.
#include <iostream>
#include <map>
#include <cstring>
using namespace std;
class word {
char str[20];
public:
word() { strcpy(str, ""); }
word(char *s) { strcpy(str, s); }
char *get() { return str; }
};
bool operator<(word a, word b)
{
return strcmp(a.get(), b.get()) < 0;
}
class meaning {
char str[80];
public:
meaning() { strcmp(str, " ");}
meaning(char *s) { strcpy(str, s); }
char *get() { return str; }
};
int main()
{
map<word, meaning> dictionary;
/* Помещаем в отображение объекты классов word и meaning. */
dictionary.insert( pair<word, meaning> (word("дом"), meaning("Место проживания.")));
dictionary.insert( pair<word, meaning> (word("клавиатура"), meaning("Устройство ввода данных.")));
dictionary.insert( pair<word, meaning> (word("программирование"), meaning("Процесс создания программы.")));
dictionary.insert( pair<word, meaning> (word("STL"), meaning("Standard Template Library")));
// По заданному слову находим его значение.
char str[80];
cout << "Введите слово: ";
cin >> str;