Ce face std::map::erase
erase(cheie) șterge perechea cu acea cheie și returnează câte elemente a șters (0 sau 1 la std::map). erase(it) șterge elementul indicat de iterator și returnează iteratorul următorului element, util când ștergi în buclă.
Se invalidează doar iteratorii și referințele la elementele șterse; restul rămân valide. Pentru „șterge toate elementele care…” există și std::erase_if(m, conditie) (C++20).
Parametri
| Parametru | Descriere |
|---|---|
cheie |
Cheia de șters. |
poz |
Iterator la elementul de șters (nu end()). |
prim, ultim |
Intervalul de șters. |
Ce returnează
Numărul de elemente șterse (pentru varianta cu cheie) sau iteratorul de după ultimul element șters.
Exemple
Exemplul 1: Ștergere după cheie
#include <map>
#include <print>
#include <string>
int main() {
std::map<std::string, int> cos{{"lapte", 2}, {"pâine", 1}, {"ouă", 10}};
std::println("Șterse: {}", cos.erase("pâine"));
std::println("Șterse: {}", cos.erase("kiwi")); // nu există: 0
std::println("{}", cos);
}
Rezultat
Șterse: 1
Șterse: 0
{"lapte": 2, "ouă": 10}
Exemplul 2: Ștergere în buclă cu iteratorul returnat
#include <map>
#include <print>
#include <string>
int main() {
std::map<std::string, int> stoc{{"mere", 0}, {"pere", 4}, {"prune", 0}, {"struguri", 7}};
for (auto it = stoc.begin(); it != stoc.end(); ) {
if (it->second == 0) {
it = stoc.erase(it);
} else {
++it;
}
}
std::println("{}", stoc);
}
Rezultat
{"pere": 4, "struguri": 7}
Greșeli frecvente
- Scrii
stoc.erase(it); ++it;. După ștergere,iteste invalid (comportament nedefinit). Foloseșteit = stoc.erase(it);saustd::erase_if.
Comenzi înrudite
std::map: Dicționar ordonat: asociază fiecărei chei unice o valoare și păstrează cheile sortate.std::erase_if: Șterge dintr-un container toate elementele egale cu o valoare (std::erase) sau care îndeplinesc o condiție (std::erase_if).std::map::extract: extract() scoate un nod din map fără să-l distrugă (îi poți schimba cheia); merge() mută nodurile din alt map.std::set::erase: Șterge din set o valoare, elementul indicat de un iterator sau un interval de elemente.