##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::set::erase

From cppreference.com
< cpp‎ | container‎ | set

[edit template]

| (1) |
void erase( iterator pos ); |  | (until C++11)
iterator erase( const_iterator pos ); |  | (since C++11)
iterator erase( iterator pos ); |  | (since C++17)
| (2) |
void erase( iterator first, iterator last ); |  | (until C++11)
iterator erase( const_iterator first, const_iterator last ); |  | (since C++11)
size_type erase( const key_type& key ); | (3) |

Removes specified elements from the container.

1) Removes the element at `pos`.
2) Removes the elements in the range `[first; last)`, which must be a valid range in *this.
3) Removes the element (if one exists) with the key equivalent to `key`.

References and iterators to the erased elements are invalidated. Other references and iterators are not affected.

The iterator `pos` must be valid and dereferenceable. Thus the end() iterator (which is valid, but is not dereferencable) cannot be used as a value for `pos`.

### [edit] Parameters

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

### [edit] Return value

1-2) Iterator following the last removed element.
3) Number of elements removed.

### [edit] Exceptions

1,2) (none)
3) Any exceptions thrown by the `Compare` object.

### [edit] Complexity

Given an instance `c` of `set`:

1) Amortized constant
2) log(c.size()) + std::distance(first, last)
3) log(c.size()) + c.count(k)

### [edit] Example

Run this code

    #include <set>
    #include <iostream>
    int main()
    {
        std::set<int> c = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        // erase all odd numbers from 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 << ' ';
    }

Output:

    2 4 6 8

### [edit] See also

clear | clears the contents (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/set/erase&oldid=50652"