map — контейнер STL, що зберігає набір даних формату ключ - значення (інша назва - асоціативний масив. При цьому ключами можуть бути будь-які об'єкти, які задовільняють умову унікальності ключів. В подібному контейнері можуть зберігатися елементи, що адресуються ключами серед яких допускаються повтори.
Асоціативні контейнери, в тому числі map, особливо ефективні для доступу до елементів за їх ключем, на відміну від послідовних контейнерів, які більш ефективні для отримання доступу до елементів по їх порядковому індексу. Асоціативні контейнери гарантовано виконують операції вставки, видалення і пошуку елементу за логарифмічний час - 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; }
Важливо зауважити, що дані в асоціативному масиві автоматично відсортовані за ключем, а не в порядку додавання, тому програма описана вище дає такий вивід:
Виберемо місяць березень Наступний за ним: вересень
Посилання
- (PDF). p. 797, § 23.4.4. Архів оригіналу (PDF) за 13 березня 2011. Процитовано 27 лютого 2015.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
map kontejner STL sho zberigaye nabir danih formatu klyuch znachennya insha nazva asociativnij masiv Pri comu klyuchami mozhut buti bud yaki ob yekti yaki zadovilnyayut umovu unikalnosti klyuchiv V podibnomu kontejneri mozhut zberigatisya elementi sho adresuyutsya klyuchami sered yakih dopuskayutsya povtori Asociativni kontejneri v tomu chisli map osoblivo efektivni dlya dostupu do elementiv za yih klyuchem na vidminu vid poslidovnih kontejneriv yaki bilsh efektivni dlya otrimannya dostupu do elementiv po yih poryadkovomu indeksu Asociativni kontejneri garantovano vikonuyut operaciyi vstavki vidalennya i poshuku elementu za logarifmichnij chas O log n Yak pravilo voni realizuyetsya za dopomogoyu odnogo z riznovidiv binarnogo zbalansovanogo dereva i pidtrimuyut dvostoronnyu iteraciyu Dlya kontejnera map vikoristovuyutsya iteratori sho vkazuyut na konkretni elementi v kontejneri Vikoristovuyuchi takij iterator mozhna otrimati i klyuch i vidpovidnij jomu element Priklad vikoristannyaNajkrashe zrozumiti zastosuvannya asociativnih masiviv na prikladi include lt iostream gt include lt map gt Zagolovok v yakomu znahoditsya map include lt string gt using namespace std int main map lt string int gt months Ogoloshuyemo asociativnij masiv z klyuchami ryadkami i cilimi danimi months sichen 1 months lyutij 2 Zaradi ekonomiyi miscya propusheno teplishi misyaci months gruden 12 map lt string int gt iterator it Iterator po kontejneru for it months begin it months end it Vivodimo vsi cout lt lt it gt first lt lt lt lt it gt second lt lt endl Iterator ce para klyuch znachennya Klyuch v poli first a znachennya u poli second it months find berezen cout lt lt Viberemo misyac lt lt it gt first lt lt endl it cout lt lt Nastupnij za nim lt lt it gt first return 0 Vazhlivo zauvazhiti sho dani v asociativnomu masivi avtomatichno vidsortovani za klyuchem a ne v poryadku dodavannya tomu programa opisana vishe daye takij vivid Viberemo misyac berezen Nastupnij za nim veresenPosilannya PDF p 797 23 4 4 Arhiv originalu PDF za 13 bereznya 2011 Procitovano 27 lyutogo 2015