map::erase
Удаляет элемент или набор элементов в сопоставлении из заданных позиций или удалять элементы, соответствующие указанному ключу.
iterator erase(
const_iterator Where
);
iterator erase(
const_iterator First,
const_iterator Last
);
size_type erase(
const key_type& Key
);
Параметры
Where
Положение элемента, необходимо удалить.First
Позиция первого элемента, необходимо удалить.Last
Расположите только за последним элементом, который необходимо удалить.Key
Значение ключа элемента, который необходимо удалить.
Возвращаемое значение
Для первых 2 функций-членов, двунаправленного итератора, обозначает первый элемент оставшиеся за всеми удаленными элементами или элемента, конца, если такой элемент не существует.
Для третьего функцию-член, возвращает количество элементов, которые были удалены из сопоставления.
Пример
// map_erase.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>
#include <iterator> // next() and prev() helper functions
#include <utility> // make_pair()
using namespace std;
using mymap = map<int, string>;
void printmap(const mymap& m) {
for (const auto& elem : m) {
cout << " [" << elem.first << ", " << elem.second << "]";
}
cout << endl << "size() == " << m.size() << endl << endl;
}
int main()
{
mymap m1;
// Fill in some data to test with, one at a time
m1.insert(make_pair(1, "A"));
m1.insert(make_pair(2, "B"));
m1.insert(make_pair(3, "C"));
m1.insert(make_pair(4, "D"));
m1.insert(make_pair(5, "E"));
cout << "Starting data of map m1 is:" << endl;
printmap(m1);
// The 1st member function removes an element at a given position
m1.erase(next(m1.begin()));
cout << "After the 2nd element is deleted, the map m1 is:" << endl;
printmap(m1);
// Fill in some data to test with, one at a time, using an intializer list
mymap m2
{
{ 10, "Bob" },
{ 11, "Rob" },
{ 12, "Robert" },
{ 13, "Bert" },
{ 14, "Bobby" }
};
cout << "Starting data of map m2 is:" << endl;
printmap(m2);
// The 2nd member function removes elements
// in the range [First, Last)
m2.erase(next(m2.begin()), prev(m2.end()));
cout << "After the middle elements are deleted, the map m2 is:" << endl;
printmap(m2);
mymap m3;
// Fill in some data to test with, one at a time, using emplace
m3.emplace(1, "red");
m3.emplace(2, "yellow");
m3.emplace(3, "blue");
m3.emplace(4, "green");
m3.emplace(5, "orange");
m3.emplace(6, "purple");
m3.emplace(7, "pink");
cout << "Starting data of map m3 is:" << endl;
printmap(m3);
// The 3rd member function removes elements with a given Key
mymap::size_type count = m3.erase(2);
// The 3rd member function also returns the number of elements removed
cout << "The number of elements removed from m3 is: " << count << "." << endl;
cout << "After the element with a key of 2 is deleted, the map m3 is:" << endl;
printmap(m3);
}
Output
Starting data of map m1 is:
[1, A] [2, B] [3, C] [4, D] [5, E]
size() == 5
After the 2nd element is deleted, the map m1 is:
[1, A] [3, C] [4, D] [5, E]
size() == 4
Starting data of map m2 is:
[10, Bob] [11, Rob] [12, Robert] [13, Bert] [14, Bobby]
size() == 5
After the middle elements are deleted, the map m2 is:
[10, Bob] [14, Bobby]
size() == 2
Starting data of map m3 is:
[1, red] [2, yellow] [3, blue] [4, green] [5, orange] [6, purple] [7, pink]
size() == 7
The number of elements removed from m3 is: 1.
After the element with a key of 2 is deleted, the map m3 is:
[1, red] [3, blue] [4, green] [5, orange] [6, purple] [7, pink]
size() == 6
Требования
Заголовок:<map>
Пространство имен: std