на начало
На главную страницу
Форум   

Статья :: Контейнеры типа map

 

Контейнеры типа map

Отображение (map) является сортируемым ассоциативным контейнером, который ассоциирует объекты типа key с объектами типа value. Map — это Pair Associative Container, так как он хранит пары типа pair<const Key, Data>. Говорят также о Unique Associative Container, имея в виду, что в контейнере типа тар не может быть одинаковых элементов. Отображения являются одними из самых мощных и удобных типов контейнеров. Рассмотрим их работу на примерах. Не забудьте вставить директиву #include <map>:

void main ()

{

//========= Создаем отображение строки в целое

map<string,int> m;

map<string,int>::_Pairib pib;

map<string,int>::iterator it;

//========= Создаем новый тип для удобства

typedef pair<string, int> MyPair; MyPair p("Monday", 1); m.insert(p);

//========= Изменяем компоненты пары

p.first = "Tusday";

p.second = 2;

pib = m.insert(p);

cout « "\n\nlnserting: "

« (*pib.first).first « ","

« (*pib.first).second

« "\nResult is: " « pib.second;

pib = m.insert(p);

cout « "\n\nlnserting: "

« (*pib.first).first « ","

« (*pib.first).second

« "\nResult is: " « pib.second;

//========= Работаем с индексом

m["Wednesday"] = 3;

m["Thirsday"] = 4;

m["Friday"] = 5;

//========= Работаем с динамической памятью

MyPair *pp = new MyPair("Saturday", 6);

m.iftsert(*pp);

delete pp;

cout«"\n\n\t <string,int> pairs :\n";

for (it = m.begin ();

if != m.end(); it++)

cout « "\n(" « it->first«","<<it->second«") ";

cout«"\n\n";

}

Результат работы этого фрагмента выглядит так:

Inserting: Tusday, 2 Result is: 1

Inserting: Tusday, 2 Result is: 0

<string,int> pairs:

(Friday, 5) (Monday, 1) (Saturday, 6) (Thirsday, 4) (Tusday, 2) (Wednesday, 3)

Как видите, пары отсортированы в лексикографическом порядке. Если потребуется восстановить естественный порядок, то это можно сделать, поменяв порядок следования аргументов при объявлении шаблона на

map<int, string> m;

Такую замену придется сделать и для всех других, связанных с шаблоном типов данных. Отметьте также, что при работе с отображениями недостаточно разадресо-вать итератор (*it), чтобы получить объект им указываемый. Теперь вы должны писать (*it) .first или it->first, чтобы получить какой-то объект. Характерно, что эти выражения могут стоять как в левой, так и в правой части операции присвоения, то есть вы можете записать:

it->first = "Sunday";

int n = it->second;

 

Контейнеры типа map

страницы в данном разделе 
Урок 10. Из жизни студентов Из жизни студентов
Использование STL Шаблоны
Шаблон функции быстрой сортировки Шаблоны классов
Контейнеры библиотеки STL Последовательности типа vector
Поиск с помощью предиката Связыватели и адаптеры
Последовательности типа deque Последовательности типа list
Ассоциативные контейнеры Контейнер типа set
Контейнеры типа map Контейнеры типа hash_multimap
Стек — это несложно Контейнеры типа queue
Контейнеры типа priority_queue Работа с потоками
Примеры использования string Полезные константы
Шаблон классов valarray Сечения массива


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C

  Партнеры



 
© faq.pp.ru, справочник программиста