Ce face std::set::erase
erase(valoare) șterge valoarea dacă există și returnează câte elemente a șters (0 sau 1 la std::set, oricâte la std::multiset). erase(it) returnează iteratorul elementului următor. Se invalidează doar iteratorii la elementele șterse.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Valoarea de șters. |
poz / prim, ultim |
Iteratorul sau intervalul de șters. |
Ce returnează
Numărul de elemente șterse, sau iteratorul următor.
Exemple
Exemplul 1: Ștergerea după valoare și a unui interval
#include <print>
#include <set>
int main() {
std::set<int> locuri_libere{3, 7, 12, 15, 21, 30};
std::println("Șters 12: {}", locuri_libere.erase(12));
std::println("Șters 99: {}", locuri_libere.erase(99));
// ștergem toate locurile de la 15 la 25
locuri_libere.erase(locuri_libere.lower_bound(15), locuri_libere.upper_bound(25));
std::println("{}", locuri_libere);
}
Rezultat
Șters 12: 1
Șters 99: 0
{3, 7, 30}
Greșeli frecvente
- Ștergi într-o buclă cu
s.erase(it); ++it;. Foloseșteit = s.erase(it);saustd::erase_if(s, conditie).
Comenzi înrudite
std::set: Mulțime ordonată de valori unice: elimină automat duplicatele și păstrează elementele sortate.std::map::erase: Șterge din map o cheie (cu valoarea ei), elementul indicat de un iterator sau un interval.std::erase_if: Șterge dintr-un container toate elementele egale cu o valoare (std::erase) sau care îndeplinesc o condiție (std::erase_if).