# std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::erase

From cppreference.com
< cpp‎ | container‎ | unordered map

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

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 iterators and references are not invalidated.

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

The order of the elements that are not erased is preserved. (This makes it possible to erase individual elements while iterating through the container.) | (since C++14)

### Parameters

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

### Return value

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

### Exceptions

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

### Complexity

Given an instance `c` of `unordered_map`:

1) Average case: constant, worst case: c.size()
2) Average case: std::distance (first, last), worst case: c.size()
3) Average case: c.count(key), worst case: c.size()

### Example

Run this code

    #include <unordered_map>
    #include <iostream>
    int main()
    {
        std::unordered_map<int, std::string> c = {{1, "one"}, {2, "two"}, {3, "three"},
                                        {4, "four"}, {5, "five"}, {6, "six"}};
        // erase all odd numbers from 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 << ' ';
    }

Possible output:

    two four six

### See also

clear | clears the contents (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/unordered_map/erase&oldid=50693"