multimap::erase() in C++ STL - GeeksforGeeks

18 Nov, 2020
multimap::erase() is a built-in function in C++ STL which is used to erase element from the container. It can be used to erase keys, elements at any specified position or a given range.Syntax for erasing a key:multimap_name.erase(key)
Parameters: The function accepts one mandatory parameter key which specifies the key to be erased in the multimap container.Return Value: The function does not return anything. It erases all the elements with the specified key.// C++ program to illustrate// multimap::erase(key)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;      // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given keys    mp.erase(1);    mp.erase(2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
3    60
Syntax for removing a position:multimap_name.erase(iterator position)
Parameters: The function accept one mandatory parameter position which specifies the iterator that is the reference to the position of the element to be erased.Return Value: The function does not returns anything.Program below illustrate the above syntax:// C++ program to illustrate// multimap::erase(position)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given position    auto it = mp.find(2);    mp.erase(it);      auto it1 = mp.find(5);    mp.erase(it1);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
3    60
2    20
1    40
Syntax for erasing a given range:multimap_name.erase(iterator position1, iterator position2)
Parameters: The function accepts two mandatory parameters which are described below:position1 – specifies the iterator that is the reference to the element from which removal is to be done.position2 – specifies the iterator that is the reference to the element upto which removal is to be done.Return Value: The function does not returns anything. It removes all the elements in the given range of iterators.Program below illustrate the above syntax:// C++ program to illustrate// multimap::erase()#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase in a given range    // find() returns the iterator reference to    // the position where the element is    auto it1 = mp.find(2);    auto it2 = mp.find(5);    mp.erase(it1, it2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
1    40

Syntax for erasing a key:multimap_name.erase(key)
Parameters: The function accepts one mandatory parameter key which specifies the key to be erased in the multimap container.Return Value: The function does not return anything. It erases all the elements with the specified key.// C++ program to illustrate// multimap::erase(key)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;      // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given keys    mp.erase(1);    mp.erase(2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
3    60

multimap_name.erase(key)

Parameters: The function accepts one mandatory parameter key which specifies the key to be erased in the multimap container.
Return Value: The function does not return anything. It erases all the elements with the specified key.
// C++ program to illustrate// multimap::erase(key)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;      // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given keys    mp.erase(1);    mp.erase(2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}
The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
3    60

Syntax for removing a position:multimap_name.erase(iterator position)
Parameters: The function accept one mandatory parameter position which specifies the iterator that is the reference to the position of the element to be erased.Return Value: The function does not returns anything.Program below illustrate the above syntax:// C++ program to illustrate// multimap::erase(position)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given position    auto it = mp.find(2);    mp.erase(it);      auto it1 = mp.find(5);    mp.erase(it1);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
3    60
2    20
1    40

multimap_name.erase(iterator position)

Parameters: The function accept one mandatory parameter position which specifies the iterator that is the reference to the position of the element to be erased.
Return Value: The function does not returns anything.
Program below illustrate the above syntax:
// C++ program to illustrate// multimap::erase(position)#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase given position    auto it = mp.find(2);    mp.erase(it);      auto it1 = mp.find(5);    mp.erase(it1);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}
The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
3    60
2    20
1    40

Syntax for erasing a given range:multimap_name.erase(iterator position1, iterator position2)
Parameters: The function accepts two mandatory parameters which are described below:position1 – specifies the iterator that is the reference to the element from which removal is to be done.position2 – specifies the iterator that is the reference to the element upto which removal is to be done.Return Value: The function does not returns anything. It removes all the elements in the given range of iterators.Program below illustrate the above syntax:// C++ program to illustrate// multimap::erase()#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase in a given range    // find() returns the iterator reference to    // the position where the element is    auto it1 = mp.find(2);    auto it2 = mp.find(5);    mp.erase(it1, it2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}Output:The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
1    40

multimap_name.erase(iterator position1, iterator position2)

Parameters: The function accepts two mandatory parameters which are described below:
position1 – specifies the iterator that is the reference to the element from which removal is to be done.
position2 – specifies the iterator that is the reference to the element upto which removal is to be done.
Return Value: The function does not returns anything. It removes all the elements in the given range of iterators.
Program below illustrate the above syntax:
// C++ program to illustrate// multimap::erase()#include <bits/stdc++.h>using namespace std;  int main(){      // initialize container    multimap<int, int> mp;    // insert elements in random order    mp.insert({ 2, 30 });    mp.insert({ 1, 40 });    mp.insert({ 3, 60 });    mp.insert({ 2, 20 });    mp.insert({ 5, 50 });      // prints the elements    cout << "The multimap before using erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }      // function to erase in a given range    // find() returns the iterator reference to    // the position where the element is    auto it1 = mp.find(2);    auto it2 = mp.find(5);    mp.erase(it1, it2);      // prints the elements    cout << "\nThe multimap after applying erase() is : \n";    cout << "KEY\tELEMENT\n";    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {        cout << itr->first             << '\t' << itr->second << '\n';    }    return 0;}
The multimap before using erase() is : 
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

The multimap after applying erase() is : 
KEY    ELEMENT
5    50
1    40

arorakashish0911
CPP-Functions
cpp-multimap
STL
C++
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Operator Overloading in C++
Polymorphism in C++
Friend class and function in C++
Sorting a vector in C++
std::string class in C++
Pair in C++ Standard Template Library (STL)
Inline Functions in C++
Queue in C++ Standard Template Library (STL)
Array of Strings in C++ (5 Different Ways to Create)
Convert string to char array in C++