map::erase() es una función integrada en C++ STL que se usa para borrar elementos del contenedor. Se puede usar para borrar claves, elementos en cualquier posición específica o en un rango determinado.
- Sintaxis para borrar una clave:
map_name.erase(key)
Parámetros: la función acepta una clave de parámetro obligatoria que especifica la clave que se borrará en el contenedor del mapa.
Valor devuelto: la función devuelve 1 si el elemento clave se encuentra en el mapa; de lo contrario, devuelve 0.
El siguiente programa ilustra la sintaxis anterior:
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
- Sintaxis para eliminar una posición:
map_name.erase(iterator position)
Parámetros: la función acepta una posición de parámetro obligatoria que especifica el iterador que es la referencia a la posición del elemento que se va a borrar.
Valor devuelto: la función no devuelve nada.
El siguiente programa ilustra la sintaxis anterior:
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
- Sintaxis para borrar un rango dado:
map_name.erase(iterator position1, iterator position2)
Parámetros: La función acepta dos parámetros obligatorios que se describen a continuación:
- position1 : especifica el iterador que es la referencia al elemento del que se va a realizar la eliminación.
- position2 : especifica el iterador que es la referencia al elemento hasta el cual se debe realizar la eliminación.
Valor devuelto: la función no devuelve nada. Elimina todos los elementos en el rango dado de iteradores.
El siguiente programa ilustra la sintaxis anterior:
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