Map (STL)

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

Асоціативні контейнери, в тому числі map, особливо ефективні для доступу до елементів за їх ключем, на відміну від послідовних контейнерів, які більш ефективні для отримання доступу до елементів по їх порядковому індексу. [1] Асоціативні контейнери гарантовано виконують операції вставки, видалення і пошуку елементу за логарифмічний час - O(log n). Як правило вони реалізується за допомогою одного з різновидів бінарного збалансованого дерева і підтримують двосторонню ітерацію.

Для контейнера map використовуються ітератори, що вказують на конкретні елементи в контейнері. Використовуючи такий ітератор можна отримати і ключ і відповідний йому елемент.

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

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

#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;
}

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

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

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.