logo

Карта в стандартній бібліотеці шаблонів C++ (STL)

Карти є асоціативні контейнери які зберігають елементи у відображеному вигляді. Кожен елемент має ключове значення та відображене значення. Два зіставлених значення не можуть мати однакові ключові значення.

std::map — це шаблон класу для контейнерів карт, який визначено у файлі заголовка.



Linux перейменувати каталог

Основні функції-члени std::map

Деякі основні функції, пов’язані з std::map:

  • почати() – Повертає ітератор до першого елемента на карті.
  • кінець() – Повертає ітератор до теоретичного елемента, який слідує за останнім елементом у карті.
  • розмір() – Повертає кількість елементів на карті.
  • max_size() – Повертає максимальну кількість елементів, які може містити карта.
  • порожній() – Повертає, чи карта порожня.
  • вставка пари (ключ-значення, значення карти) – Додає новий елемент на карту.
  • стерти (позиція ітератора) – Вилучає елемент у позиції, на яку вказує ітератор.
  • стерти (const g) – Вилучає ключ-значення «g» із карти.
  • очистити() – Видаляє всі елементи з карти.

Приклади std::map

У наступних прикладах показано, як виконувати основні операції з контейнерами карти.

Приклад 1: Функції begin() і end().

C++








// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mp; // Вставити деякі значення в карту mp['one'] = 1; mp['два'] = 2; mp['три'] = 3; // Отримати ітератор, що вказує на перший елемент у // карті mapint>::iterator it = mp.begin(); // Ітерація по карті та друк елементів while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }>

>

>

Вихід

Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>

Складність вищеописаного способу:

Часова складність: O(n), де n – розмір карти.

Допоміжний простір: O(n)

приклад 2: функція size().

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>карта; // Вставте деякі значення в карту map['one'] = 1; map['two'] = 2; map['three'] = 3; // Роздрукувати розмір карти cout<< 'Size of map: ' << map.size() << endl; return 0; }>

>

>

Вихід

Size of map: 3>

Складність вищеописаного способу:

Часова складність: O(1).

Приклад 3: Реалізація карти

CPP




// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010>> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;> >// insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));> >gquiz1.insert(pair<>int>,>int>>(2, 30));> >gquiz1.insert(pair<>int>,>int>>(3, 60));> >gquiz1.insert(pair<>int>,>int>>(4, 20));> >gquiz1.insert(pair<>int>,>int>>(5, 50));> >gquiz1.insert(pair<>int>,>int>>(6, 50));> >// another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::ітератор itr;> >cout <<>' The map gquiz1 is : '>;> >cout <<>' KEY ELEMENT '>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << ' '; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map gquiz2(gquiz1.begin(), gquiz1.end()); // друкуємо всі елементи карти gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

>

>

Вихід

The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>

Складність вищеописаного способу:

Часова складність: O(n log(n)), оскільки n — розмір карти
Допоміжні приміщення: O(n)

Приклад 4: Реалізація карти цілих чисел

C++




// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>карта; // Вставте деякі значення в карту map['one'] = 1; map['two'] = 2; map['three'] = 3; // Надрукувати значення в карті cout<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) { cout<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }>

>

>

Вихід

Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>

Список усіх функцій std::map

Наступна таблиця містить усі функції, визначені в класі std::map.

функція

Визначення

map::insert()

Вставити елементи з певним ключем у контейнер карти –> O(log n)

map:: count()

Повертає кількість збігів з елементом із ключ-значенням «g» у карті. –> O(log n)

карта equal_range()

Повертає ітератор пар. Пара відноситься до меж діапазону, який включає всі елементи в контейнері, які мають ключ, еквівалентний k.

стерти карту()

Використовується для видалення елементів із контейнера –> O(log n)

карта rend()

Повертає зворотний ітератор, що вказує на теоретичний елемент безпосередньо перед першою парою ключ-значення в карті (яка вважається її зворотним кінцем).

карта rbegin()

Повертає зворотний ітератор, який вказує на останній елемент карти.

карта find()

Повертає ітератор до елемента з ключ-значенням «g» у карті, якщо знайдено, інакше повертає ітератор до кінця.

map crbegin() і crend()

crbegin() повертає постійний зворотний ітератор, який посилається на останній елемент у контейнері карти. crend() повертає постійний зворотний ітератор, що вказує на теоретичний елемент перед першим елементом у карті.

map cbegin() і cend()

cbegin() повертає постійний ітератор, який посилається на перший елемент у контейнері карти. cend() повертає постійний ітератор, що вказує на теоретичний елемент, який слідує за останнім елементом мультивідображення.

карта emplace()

Вставляє ключ і його елемент у контейнер карти.

карта max_size()

Повертає максимальну кількість елементів, які може містити контейнер карти –> O(1)

карта upper_bound()

Повертає ітератор до першого елемента, який еквівалентний зіставленому значенню з ключ-значенням «g» або обов’язково йде після елемента з ключ-значенням «g» у карті

оператор карти=

Призначає вміст контейнера іншому контейнеру, замінюючи його поточний вміст.

попередній обхід дерева
відобразити lower_bound()

Повертає ітератор до першого елемента, який еквівалентний зіставленому значенню з ключ-значенням «g» або точно не передуватиме елементу з ключ-значенням «g» у карті –> O(log n)

карта emplace_hint()

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

map value_comp()

Повертає об’єкт, який визначає порядок розташування елементів на карті («<» за замовчуванням).

map key_comp()

Повертає об’єкт, який визначає порядок розташування елементів на карті («<» за замовчуванням).

map::size()

Повертає кількість елементів на карті.

map::empty()

Повертає, чи карта порожня

map::begin() і end()

begin() повертає ітератор до першого елемента на карті. end() повертає ітератор до теоретичного елемента, який слідує за останнім елементом у карті

map::operator[]

Цей оператор використовується для посилання на елемент, присутній у позиції, заданій всередині оператора.

map::clear()

Видаляє всі елементи з карти.

map::at() і map::swap()

Функція at() використовується для повернення посилання на елемент, пов’язаний з ключем k. Функція swap() використовується для обміну вмістом двох карт, але карти мають бути одного типу, хоча розміри можуть відрізнятися.