`Description`

`Description`

```
```*Equal_range* is a version of binary search: it attempts to find the element *value* in an ordered range *[first, last)* [1]. The value returned by *equal_range* is essentially a combination of the values returned by *lower_bound *and *upper_bound*: it returns a pair of iterators *i* and *j* such that *i* is the first position where *value* could be inserted without violating the ordering and *j* is the last position where *value *could be inserted without violating the ordering. It follows that every element in the range *[i, j)* is equivalent to [1] *value*, and that *[i, j)* is the largest subrange of *[first, last)* that has this property. The first version of *equal_range* uses *operator<* for comparison, and the second uses the function object *comp*.

The first version of *equal_range* returns a pair of iterators *[i, j)*. *i* is the furthermost iterator in *[first, last)* such that, for every iterator *k* in *[first, i)*, **k < value*. *j* is the furthermost iterator in *[first, last)* such that, for every iterator *k* in *[first, j)*, *value < *k* is *false*. For every iterator *k* in *[i, j)*, neither *value < *k* nor **k < value* is *true*. [2]

The second version of *equal_range* returns a pair of iterators *[i, j)*. *i* is the furthermost iterator in *[first, last)* such that, for every iterator *k* in *[first, i)*, *comp(*k, value)* is *true*. *j* is the furthermost iterator in *[first, last)* such that, for every iterator *k* in *[first, j)*, *comp(value, *k)* is *false*. For every iterator *k* in *[i, j)*, neither *comp(value, *k)* nor *comp(*k, value)* is *true*. [2]