std::map::erase – cppreference.com
Z cppreference.com
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
| (1) | ||
|
|
(do C++11) | |
|
|
(od C++11) | |
| (2) | ||
|
|
(do C++11) | |
|
|
(od C++11) | |
|
|
(3) | |
Usuwa wskazane elementy.
1) Usuwa element z pozycji
pos.
2) Usuwa elementy w zakresie
[first; last), który musi być poprawnym zakresem w *this.
3) Usuwa element (jeśli istnieje) z kluczem równym
key.
Iteratory i referencje do usuwanych elementów zostają unieważnione. Nie ma wpływu na pozostałe iteratory ani referencje.
Iterator pos musi być poprawny i dać się zdereferencjować. Stąd też iterator zakońcowy end() (który jest poprawny, ale nie dereferencjowalny) nie może być użyty jako wartość pos.
Parametry
| pos | - | iterator to the element to remove |
| first, last | - | range of elements to remove |
| key | - | key value of the elements to remove |
Zwracana wartość
1-2) Iterator za ostatni usunięty element.
3) Liczbę usuniętych elementów.
Wyjątki
1,2) (brak)
3) Dowolne wyjątki wyrzucone przez obiekt
Compare.
Złożoność
Given an instance c of map:
1) Amortyzowana stała
2) log(c.size()) + std::distance(first, last)
3) log(c.size()) + c.count(k)
Przykład
#include <map> #include <iostream> int main() { std::map<int, std::string> c = {{1, "one"}, {2, "two"}, {3, "three"}, {4, "four"}, {5, "five"}, {6, "six"}}; // usuwa wszystkie liczby parzyste z c for(auto it = c.begin(); it != c.end(); ) if(it->first % 2 == 1) it = c.erase(it); else ++it; for(auto& p : c) std::cout << p.second << ' '; }
Wynik: