# Iterators

The types `concurrent_hash_map::iterator` and `concurrent_hash_map::const_iterator` meet the requirements of `ForwardIterator` from the [forward.iterators] ISO C++ Standard section.

All member functions in this section can only be performed serially. The behavior is undefined in case of concurrent execution of these member functions with other (either concurrently safe) methods.

## begin and cbegin

>     iterator begin();

>     const_iterator begin() const;

>     const_iterator cbegin() const;

> Returns: an iterator to the first element in the container.

## end and cend

>     iterator end();

>     const_iterator end() const;

>     const_iterator cend() const;

> Returns: an iterator to the element that follows the last element in the container.

## equal_range

>     std::pair<iterator, iterator> equal_range( const key_type& key );

>     std::pair<const_iterator, const_iterator> equal_range( const key_type& key ) const;

> Returns: a range containing an element that is equivalent to `key`. If there is no such element in the container, returns `{end(), end()}` .

>     template <typename K>
>     std::pair<iterator, iterator> equal_range( const K& key );

>     template <typename K>
>     std::pair<const_iterator, const_iterator> equal_range( const K& key ) const;

> Returns: a range containing an element which compares equivalent to the value `key`. If there is no such element in the container, returns `{end(), end()}`.

> This overload only participates in the overload resolution if qualified-id `hash_compare_type::is_transparent` is valid and denotes a type.