# Iteration

Class template `enumerable_thread_specific` supports random access iterators, which enable iteration over the set of all elements in the container.

iterator begin()

  Returns `iterator` pointing to the beginning of the set of elements.

iterator end()

  Returns `iterator` pointing to the end of the set of elements.

const_iterator begin() const

  Returns `const_iterator` pointing to the beginning of the set of elements.

const_iterator end() const

  Returns `const_iterator` pointing to the end of the set of elements.

Class template `enumerable_thread_specific` supports `const_range_type` and `range_type` types, which model the ContainerRange requirement. The types differ only in that the bounds for a `const_range_type` are of type `const_iterator`, whereas the bounds for a `range_type` are of type `iterator`.

const_range_type range(size_t grainsize = 1) const

  Returns: A `const_range_type` representing all elements in `*this`. The parameter `grainsize` is in units of elements.

range_type range(size_t grainsize = 1)

  Returns: A `range_type` representing all elements in `*this`. The parameter `grainsize` is in units of elements.