std::multiset::erase
Z cppreference.com
| (1) | ||
void erase( iterator pos ); |
(do C++11) | |
iterator erase( const_iterator pos ); |
(od C++11) | |
| (2) | ||
void erase( iterator first, iterator last ); |
(do C++11) | |
iterator erase( const_iterator first, const_iterator last ); |
(od C++11) | |
size_type erase( const key_type& key ); |
(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 wszystkie elementy 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 multiset:
1) Amortyzowana stała
2)
log(c.size()) + std::distance(first, last)3)
log(c.size()) + c.count(k)Przykład
#include <set>
#include <iostream>
int main()
{
std::multiset<int> c = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// usuwa wszystkie liczby parzyste z c
for(auto it = c.begin(); it != c.end(); )
if(*it % 2 == 1)
it = c.erase(it);
else
++it;
for(int n : c)
std::cout << n << ' ';
}
Wynik:
2 4 6 8
Zobacz także
| czyści zawartość (publiczna metoda) |