Карти є частиною C++ STL (стандартна бібліотека шаблонів). Карти — це асоціативні контейнери, які зберігають відсортовану пару ключ-значення, у якій кожен ключ унікальний і його можна вставляти або видаляти, але не можна змінювати. Значення, пов’язані з ключами, можна змінювати.
Наприклад: Карту співробітників, де ідентифікатор працівника є ключем, а ім’я – значенням, можна представити так:
Ключі | Цінності |
---|---|
101 | Микита |
102 | Робін |
103 | Глибокий |
104 | Джон |
Синтаксис
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Параметр
ключ: Ключовий тип даних, який буде зберігатися на карті.
тип: Тип даних значення, яке буде зберігатися на карті.
порівняти: Клас порівняння, який приймає два аргументи одного типу bool і повертає значення. Цей аргумент є необов’язковим, а двійковий предикат less є значенням за замовчуванням.
розподілити: Тип об'єкта розподілювача. Цей аргумент необов’язковий, а значенням за замовчуванням є розподільник.
Створення карти
Карти можна легко створити за допомогою наступного оператора:
typedef pair value_type;
Форма вище буде використана для створення карти з ключем типу Тип ключа і значення типу тип значення. Одна важлива річ полягає в тому, що ключ карти та відповідні значення завжди вставляються як пара, ви не можете вставити лише ключ або лише значення в карту.
Приклад 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
Вихід:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Функції члена
Нижче наведено список усіх функцій-членів map:
Будівельник/Руйнівник
Функції | опис |
---|---|
конструктори | Побудувати карту |
есмінці | Деструктор карт |
оператор= | Скопіюйте елементи карти на іншу карту. |
Ітератори
Функції | опис |
---|---|
почати | Повертає ітератор, що вказує на перший елемент у карті. |
cbegin | Повертає ітератор const, що вказує на перший елемент у карті. |
кінець | Повертає ітератор, що вказує на минулий кінець. |
декілька | Повертає постійний ітератор, що вказує на минулий кінець. |
rbegin | Повертає зворотний ітератор, що вказує на кінець. |
робить | Повертає зворотний ітератор, що вказує на початок. |
crbegin | Повертає постійний зворотний ітератор, що вказує на кінець. |
вірити | Повертає постійний зворотний ітератор, що вказує на початок. |
Ємність
Функції | опис |
---|---|
порожній | Повертає true, якщо карта порожня. |
розмір | Повертає кількість елементів на карті. |
максимальний_розмір | Повертає максимальний розмір карти. |
Доступ до елемента
Функції | опис |
---|---|
оператор [] | Отримати елемент із заданим ключем. |
в | Отримати елемент із заданим ключем. |
Модифікатори
Функції | опис |
---|---|
вставка | Вставити елемент на карту. |
стерти | Видалити елементи з карти. |
своп | Обмін вмістом карти. |
ясно | Видалити всі елементи карти. |
Місцезнаходження | Побудуйте та вставте нові елементи на карту. |
emplace_hint | Побудуйте та вставте нові елементи на карту за підказкою. |
Спостерігачі
Функції | опис |
---|---|
key_comp | Повернути копію об’єкта порівняння ключів. |
значення_комп | Повернути копію об’єкта порівняння значень. |
Операції
Функції | опис |
---|---|
знайти | Пошук елемента з заданим ключем. |
рахувати | Отримує кількість елементів, які відповідають даному ключу. |
нижня_межа | Повертає ітератор до нижньої межі. |
верхня_межа | Повертає ітератор до верхньої межі. |
рівний_діапазон | Повертає діапазон елементів, які відповідають заданому ключу. |
Розподільник
Функції | опис |
---|---|
get_allocator | Повертає об’єкт розподілювача, який використовується для створення карти. |
Перевантажені функції, які не є членами
Функції | опис |
---|---|
оператор== | Перевіряє, чи дві карти рівні чи ні. |
оператор!= | Перевіряє, чи дві карти рівні чи ні. |
оператор< | Перевіряє, чи перша карта менша за іншу. |
оператор<=< td> | Перевіряє, чи перша карта менша або дорівнює іншій чи ні. | =<>
оператор> | Перевіряє, чи перша карта більша за інші. |
оператор>= | Перевіряє, чи перша карта є більшою за іншу чи ні. |
своп() | Обмінюється елементом двох карт. |