unordered_multimap erase in C++ STL

unordered_multimap::erase() is a built in function in C++ STL which removes the element from given range, by position and by key. There are three variant of this function in C++ STL.
There are following type of erase() functions in C++ for unordered_multimap.

  1. By position : It removes element from unordered_multimap by given position and return an iterator pointing to the position immediately following the last of the elements erased.
  2. By key : It removes elements by the key. It returns the number of elements which has been erased.
  3. By range : It takes iterator first and last and removes all elements between them including first but excluding last.It return an iterator pointing to the position immediately following the last of the elements erased.

Syntax:

  1. iterator erase ( iterator position )
  2. size erase ( key_type& k )
  3. iterator erase ( iterator first, iterator last );

Below programs explains about above functions.
Example 1

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to illustrate the
// unordered_multimap::erase() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // declaration of unordered_multimap
    unordered_multimap<char, int> sample;
  
    // inserts element
    sample.insert({ 'a', 2 });
    sample.insert({ 'b', 4 });
    sample.insert({ 'c', 8 });
    sample.insert({ 'd', 10 });
    sample.insert({ 'c', 4 });
    sample.insert({ 'e', 4 });
    sample.insert({ 'f', 4 });
    cout << " Elements of multimap are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // delete element by position
    sample.erase(sample.begin());
  
    // print after delete by position
    cout << " Elements of multimap after deleting by position are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // erase by Element
    sample.erase('c');
  
    // print after delete by element
    cout << " Elements of multimap after deleting by element name : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // erase by range
    sample.erase(sample.find('e'), sample.end());
  
    // print after delete by range
    cout << " Elements of multimap after deleting by range are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
    return 0;
}

chevron_right


Output:

Elements of multimap are : 
f : 4
b : 4
a : 2
c : 4
c : 8
d : 10
e : 4
 Elements of multimap after deleting by position are : 
b : 4
a : 2
c : 4
c : 8
d : 10
e : 4
 Elements of multimap after deleting by element name : 
b : 4
a : 2
d : 10
e : 4
 Elements of multimap after deleting by range are : 
b : 4
a : 2
d : 10

Example 2

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to illustrate the
// unordered_multimap::erase() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // declaration of unordered_multimap
    unordered_multimap<int, int> sample;
  
    // inserts element
    sample.insert({ 1, 2 });
    sample.insert({ 2, 4 });
    sample.insert({ 3, 8 });
    sample.insert({ 4, 10 });
    sample.insert({ 3, 4 });
    sample.insert({ 5, 4 });
    sample.insert({ 6, 4 });
    cout << " Elements of multimap are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // delete element by position
    sample.erase(sample.begin());
  
    // print after delete by position
    cout << " Elements of multimap after deleting by position are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // erase by Element
    sample.erase(3);
  
    // print after delete by element
    cout << " Elements of multimap after deleting by element name : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
  
    // erase by range
    sample.erase(sample.find(5), sample.end());
  
    // print after delete by range
    cout << " Elements of multimap after deleting by range are : \n";
    for (auto& x : sample)
        cout << x.first << " : " << x.second << endl;
    return 0;
}

chevron_right


Output:

Elements of multimap are : 
6 : 4
2 : 4
1 : 2
3 : 4
3 : 8
4 : 10
5 : 4
 Elements of multimap after deleting by position are : 
2 : 4
1 : 2
3 : 4
3 : 8
4 : 10
5 : 4
 Elements of multimap after deleting by element name : 
2 : 4
1 : 2
4 : 10
5 : 4
 Elements of multimap after deleting by range are : 
2 : 4
1 : 2
4 : 10


My Personal Notes arrow_drop_up

All powers are within you You can do anything and everything Believe in that

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.