Метод erase
Метод erase удаляет элементы из контейнера
map. Он имеет три перегруженные версии.
Первая версия принимает ключ и удаляет элемент
с этим ключом, возвращая количество удаленных
элементов. Вторая версия принимает итератор
и удаляет элемент, на который он указывает,
возвращая итератор на следующий элемент.
Третья версия принимает два итератора и удаляет
диапазон элементов [first, last).
Синтаксис
map.erase(key)
map.erase(iterator)
map.erase(first, last)
Пример
Давайте создадим map с несколькими элементами и удалим один из них по ключу:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, string> mp = {
{1, "abcde"},
{2, "12345"},
{3, "hello"}
};
mp.erase(2);
for (auto el : mp)
{
cout << el.first << " " << el.second << endl;
}
return 0;
}
Результат выполнения кода:
"1 abcde"
"3 hello"
Пример
Давайте удалим элемент по итератору, полученному
через метод find:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, string> mp = {
{1, "abcde"},
{2, "12345"},
{3, "hello"}
};
auto it = mp.find(3);
if (it != mp.end())
{
mp.erase(it);
}
for (auto el : mp)
{
cout << el.first << " " << el.second << endl;
}
return 0;
}
Результат выполнения кода:
"1 abcde"
2 12345
Пример
Давайте удалим диапазон элементов с помощью двух итераторов:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, string> mp = {
{1, "abcde"},
{2, "12345"},
{3, "hello"},
{4, "world"}
};
mp.erase(mp.find(2), mp.find(4));
for (auto el : mp)
{
cout << el.first << " " << el.second << endl;
}
return 0;
}
Результат выполнения кода:
"1 abcde"
"4 world"