Перейти до вмісту

Map (STL)

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 22:44, 21 лютого 2011, створена Bunyk (обговорення | внесок) (Створена сторінка: '''map''' - контейнер STL, що зберігає набір даних формату ключ - значення (інша назва - [[асоці...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

map - контейнер STL, що зберігає набір даних формату ключ - значення (інша назва - асоціативний масив. При цьому ключами можуть бути будь-які об'єкти, з умовою унікальності ключів. Ключі можуть повторюватись в подібному контейнері multimap (STL).

Приклад використання

Найкраще зрозуміти застосування асоціативних масивів на прикладі:

#include <iostream>
#include <map>// Заголовок в якому знаходиться map
#include <string>

using namespace std;

int main()
{
    map<string,int>  months;//Оголошуємо асоціативний масив з ключами - рядками, і цілими даними.
    months["січень"]=1;
    months["лютий"]=2;

    //   ...                   // Заради економії місця пропущено тепліші місяці

    months["грудень"]=12;

    map<string,int>::iterator it; // Ітератор по контейнеру
    for(it=months.begin();it!=months.end();it++) //Виводимо всі
    {
        cout << it->first << " " << it->second << endl;// Ітератор це двійка: ключ, значення
        // Ключ в полі first, а значення у полі second
    }
    it=months.find("березень");
    cout << "Виберемо місяць " << it->first << endl;
    it++;
    cout << "Наступний за ним: " << it->first;

    return 0;
}

Важливо зауважити, що дані в асоціативному масиві автоматично відсортовані за ключем, а не в порядку додавання, тому програма описана вище дає такий вивід:

Виберемо місяць березень
Наступний за ним: вересень