Картите са част от C++ STL (Standard Template Library). Картите са асоциативните контейнери, които съхраняват сортирана двойка ключ-стойност, в която всеки ключ е уникален и може да се вмъква или изтрива, но не може да се променя. Стойностите, свързани с ключовете, могат да се променят.
Например: Карта на служителите, където идентификаторът на служител е ключът, а името е стойността, може да бъде представена като:
Ключове | Стойности |
---|---|
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 и връща стойност. Този аргумент не е задължителен и двоичният предикат по-малко е стойността по подразбиране.
разпределяне: Тип на обекта за разпределение. Този аргумент не е задължителен и стойността по подразбиране е разпределител.
низ в int
Създаване на карта
Картите могат лесно да бъдат създадени с помощта на следния оператор:
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 | Връща константен итератор, сочещ към първия елемент в картата. |
край | Връща итератор, сочещ към последния край. |
няколко | Връща постоянен итератор, сочещ към последния край. |
rbegin | Връща обратен итератор, сочещ към края. |
прави | Връща обратен итератор, сочещ към началото. |
crbegin | Връща постоянен обратен итератор, сочещ към края. |
вярвам | Връща постоянен обратен итератор, сочещ към началото. |
Капацитет
Функции | Описание |
---|---|
празен | Връща true, ако картата е празна. |
размер | Връща броя на елементите в картата. |
максимален_размер | Връща максималния размер на картата. |
Достъп до елемент
Функции | Описание |
---|---|
оператор[] | Извлечете елемента с даден ключ. |
при | Извлечете елемента с даден ключ. |
Модификатори
Функции | Описание |
---|---|
вмъкнете | Вмъкване на елемент в картата. |
изтрива | Изтрийте елементи от картата. |
размяна | Обменете съдържанието на картата. |
ясно | Изтрийте всички елементи на картата. |
местоположение | Конструирайте и вмъкнете новите елементи в картата. |
emplace_hint | Конструирайте и вмъкнете нови елементи в картата чрез подсказка. |
Наблюдатели
Функции | Описание |
---|---|
key_comp | Върнете копие на обект за сравнение на ключове. |
стойност_комп | Връща копие на обект за сравнение на стойности. |
Операции
Функции | Описание |
---|---|
намирам | Търсене на елемент с даден ключ. |
броя | Получава броя на елементите, съответстващи на даден ключ. |
долна_граница | Връща итератор към долната граница. |
Горна граница | Връща итератор към горната граница. |
равен_обхват | Връща диапазона от елементи, съвпадащи с даден ключ. |
Разпределител
Функции | Описание |
---|---|
get_allocator | Връща обект за разпределение, който се използва за конструиране на картата. |
Претоварени функции, които не са членове
Функции | Описание |
---|---|
оператор== | Проверява дали двете карти са равни или не. |
оператор!= | Проверява дали двете карти са равни или не. |
оператор< | Проверява дали първата карта е по-малка от друга или не. |
оператор<=< td> | Проверява дали първата карта е по-малка или равна на друга или не. | =<>
оператор> | Проверява дали първата карта е по-голяма от останалите или не. |
оператор>= | Проверява дали първата карта е по-голяма от равна на друга или не. |
размяна() | Разменя елемента на две карти. |