# ContainerRange

[req.container_range]

`ContainerRange` is a range that represents a concurrent container or a part of the container.

The `ContainerRange` object can be used to traverse the container in parallel algorithms like `parallel_for`.

The type `CR` satisfies the `ContainerRange` requirements if:

- The type `CR` meets the requirements of Range requirements.

- The type `CR` provides the following member types and functions:

  > type CR::value_type

  >   The type of the item in the range.

  > type CR::reference

  >   Reference type to the item in the range.

  > type CR::const_reference

  >   Constant reference type to the item in the range.

  > type CR::iterator

  >   Iterator type for range traversal.

  > type CR::size_type

  >   Unsigned integer type for obtaining grain size.

  > type CR::difference_type

  >   The type of the difference between two iterators.

  > iterator CR::begin()

  >   Returns an iterator to the beginning of the range.

  > iterator CR::end()

  >   Returns an iterator to the position that follows the last element in the range.

  > size_type CR::grainsize() const

  >   Returns the range grain size.