Przestrzenie nazw
Warianty
Działania

std::multiset::erase

Z cppreference.com
< cpp‎ | container‎ | multiset
(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.


Spis treści

[edytuj] Parametry

pos - iterator to the element to remove
first, last - range of elements to remove
key - key value of the elements to remove

[edytuj] Zwracana wartość

1-2) Iterator za ostatni usunięty element.
3) Liczbę usuniętych elementów.

[edytuj] Wyjątki

1,2) (brak)
3) Dowolne wyjątki wyrzucone przez obiekt Compare.

[edytuj] 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)

[edytuj] 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


[edytuj] Zobacz także

czyści zawartość
(publiczna metoda) [edit]