map erase() function in C++ STL
map::erase() is a built-in function in C++ STL that is used to erase elements from the container. It can be used to erase keys and elements at any specified position or a given range.
- The syntax for erasing a key:
map_name.erase(key)
Parameters: The function accepts one mandatory parameter key which specifies the key to be erased in the map container.
Return Value: The function returns 1 if the key element is found in the map else returns 0.
The below program illustrate the above syntax:
C++
// C++ program to illustrate // map::erase(key) #include <bits/stdc++.h> using namespace std; int main() { // initialize container map< int , int > mp; // insert elements in random order mp.insert({ 2, 30 }); mp.insert({ 1, 40 }); mp.insert({ 3, 60 }); mp.insert({ 5, 50 }); // prints the elements cout << "The map 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 map after applying erase() is : \n" ; cout << "KEY\tELEMENT\n" ; for ( auto itr = mp.begin(); itr != mp.end(); ++itr) { cout << itr->first << '\t' << itr->second << '\n' ; } return 0; } |
The map before using erase() is : KEY ELEMENT 1 40 2 30 3 60 5 50 The map after applying erase() is : KEY ELEMENT 3 60 5 50
Time Complexity: O(1) or Amortized constant
- The syntax for removing a position:
map_name.erase(iterator position)
Parameters: The function accepts 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 return anything.
The below program illustrate the above syntax:
C++
// C++ program to illustrate // map::erase(iteratorposition) #include <bits/stdc++.h> using namespace std; int main() { // initialize container map< int , int > mp; // insert elements in random order mp.insert({ 2, 30 }); mp.insert({ 1, 40 }); mp.insert({ 3, 60 }); mp.insert({ 5, 50 }); // prints the elements cout << "The map 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 map after applying erase() is : \n" ; cout << "KEY\tELEMENT\n" ; for ( auto itr = mp.begin(); itr != mp.end(); ++itr) { cout << itr->first << '\t' << itr->second << '\n' ; } return 0; } |
The map before using erase() is : KEY ELEMENT 1 40 2 30 3 60 5 50 The map after applying erase() is : KEY ELEMENT 1 40 3 60
Time Complexity: O(n)
- The syntax for erasing a given range:
map_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 up to which removal is to be done.
Return Value: The function does not return anything. It removes all the elements in the given range of iterators.
The program below illustrates the above syntax:
C++
// C++ program to illustrate // map::erase(iteratorposition1, iteratorposition2) #include <bits/stdc++.h> using namespace std; int main() { // initialize container map< 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 map 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 map after applying erase() is : \n" ; cout << "KEY\tELEMENT\n" ; for ( auto itr = mp.begin(); itr != mp.end(); ++itr) { cout << itr->first << '\t' << itr->second << '\n' ; } return 0; } |
The map before using erase() is : KEY ELEMENT 1 40 2 30 3 60 5 50 The map after applying erase() is : KEY ELEMENT 1 40 5 50
Time Complexity: O(last – first)
Please Login to comment...