содержание
Вставьте элементы и определите, успешна ли вставка
вводить
map — это ассоциативный контейнер STL, обеспечивающий однозначное хэширование.
- Первый можно назвать ключом, и каждый ключ может появиться на карте только один раз;
- Второе можно назвать значением ключевого слова;
Карта реализована в шаблонном (универсальном) виде и может хранить любые типы данных, включая пользовательские типы данных. Карта в основном используется для отображения данных один к одному.Внутренняя реализация карты строит красно-черное дерево, которое имеет функцию автоматической сортировки данных. Все данные внутри карты упорядочены, как показано ниже:
Общие функции
begin() возвращает итератор в начало карты
clear() удаляет все элементы
count() возвращает количество вхождений указанного элемента
empty() возвращает true, если карта пуста
end() возвращает итератор, указывающий на конец карты
equal_range() возвращает пару специальных элементов итератора
стереть() удаляет элемент
find() находит элемент
insert() вставляет элемент
max_size() возвращает максимальное количество элементов, которое может быть размещено
size() возвращает количество элементов на карте
swap() Поменять местами две карты
get_allocator() возвращает конфигуратор карты
key_comp() Возвращает функцию, которая сравнивает ключ элемента
lower_bound() Возвращает значение ключа >= первая позиция данного элемента
max_size() Возвращает максимальное количество элементов, которое может быть размещено
rbegin() возвращает обратный итератор в конец карты
rend() возвращает обратный итератор в начало карты
upper_bound() возвращает значение ключа> первую позицию данного элемента
value_comp() Возвращает функцию, которая сравнивает значение элемента
Экземпляр функции
Вставьте элементы и определите, успешна ли вставка
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<int, string> myMap;
// Первый — использовать функцию вставки для вставки пары
myMap.insert(pair<int,string>(01, "aa"));
// Второй — использовать функцию вставки для вставки данных value_type
myMap.insert(map<int, string>::value_type(02, "bb"));
// Третий способ вставки в "массив"
myMap[33] = "cc";
// Создаем определение, возвращаем парный объект, проверяем успешность добавления
pair<map<int, string>::iterator, bool> Insert_Pair;
Insert_Pair = myMap.insert(map<int, string>::value_type(33, "cc"));
if (!Insert_Pair.second)
cout << "Error insert new element" << endl;
cout << "\n";
return 0;
}
карта маршрута
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
//Первый метод обхода, итератор+пока
map<int, int>::iterator iter;
iter = m.begin();
while (iter != m.end()) {
cout << iter->first << "-" << iter->second << endl;
iter++;
}
//Второй метод обхода, for+iterator
for (iter = m.begin(); iter != m.end(); iter++) {
cout << iter->first << "-" << iter->second << endl;
}
//Третий метод обхода for+auto
for (auto &it : m) {
cout << it.first << "-" << it.second << endl;
}
return 0;
}
найти элемент
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
auto it = m.find(3);
if (it != m.end())
{
int ss = (*it).second;//или int ss=it->second
cout << ss << endl;
}
return 0;
}
удалить элемент
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
//Удалить элемент, на который указывает ключ bfff
m.erase(4);
//Удаляем элемент, на который указывает ключ итератора
map<int, int>::iterator key = m.find(2);
if (key != m.end())
{
m.erase(key);
}
// удаляем все элементы
m.erase(m.begin(), m.end());
return 0;
}
Подсчитайте количество вхождений ключа
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
int c = m.count(1);
cout << c << endl;
return 0;
}