Non-Mutating
Algorithms
Collaboration diagram for Non-Mutating:

## Functions

template<typename _ForwardIterator >
_ForwardIterator | std::adjacent_find (_ForwardIterator __first, _ForwardIterator __last)
template<typename _ForwardIterator , typename _BinaryPredicate >
_ForwardIterator | std::adjacent_find (_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __binary_pred)
template<typename _InputIterator , typename _Predicate >
bool | std::all_of (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _InputIterator , typename _Predicate >
bool | std::any_of (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _InputIterator , typename _Tp >
iterator_traits < _InputIterator > ::difference_type | std::count (_InputIterator __first, _InputIterator __last, const _Tp &__value)
template<typename _InputIterator , typename _Predicate >
iterator_traits < _InputIterator > ::difference_type | std::count_if (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _IIter1 , typename _IIter2 , typename _BinaryPredicate >
bool | std::equal (_IIter1 __first1, _IIter1 __last1, _IIter2 __first2, _BinaryPredicate __binary_pred)
template<typename _II1 , typename _II2 >
bool | std::equal (_II1 __first1, _II1 __last1, _II2 __first2)
template<typename _InputIterator , typename _Tp >
_InputIterator | std::find (_InputIterator __first, _InputIterator __last, const _Tp &__val)
template<typename _ForwardIterator1 , typename _ForwardIterator2 >
_ForwardIterator1 | std::find_end (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2)
template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >
_ForwardIterator1 | std::find_end (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __comp)
template<typename _InputIterator , typename _ForwardIterator >
_InputIterator | std::find_first_of (_InputIterator __first1, _InputIterator __last1, _ForwardIterator __first2, _ForwardIterator __last2)
template<typename _InputIterator , typename _ForwardIterator , typename _BinaryPredicate >
_InputIterator | std::find_first_of (_InputIterator __first1, _InputIterator __last1, _ForwardIterator __first2, _ForwardIterator __last2, _BinaryPredicate __comp)
template<typename _InputIterator , typename _Predicate >
_InputIterator | std::find_if (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _InputIterator , typename _Predicate >
_InputIterator | std::find_if_not (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _InputIterator , typename _Function >
_Function | std::for_each (_InputIterator __first, _InputIterator __last, _Function __f)
template<typename _ForwardIterator1 , typename _ForwardIterator2 >
bool | std::is_permutation (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2)
template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >
bool | std::is_permutation (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _BinaryPredicate __pred)
template<typename _InputIterator1 , typename _InputIterator2 >
pair< _InputIterator1, _InputIterator2 > | std::mismatch (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2)
template<typename _InputIterator1 , typename _InputIterator2 , typename _BinaryPredicate >
pair< _InputIterator1, _InputIterator2 > | std::mismatch (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __binary_pred)
template<typename _InputIterator , typename _Predicate >
bool | std::none_of (_InputIterator __first, _InputIterator __last, _Predicate __pred)
template<typename _ForwardIterator1 , typename _ForwardIterator2 >
_ForwardIterator1 | std::search (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2)
template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >
_ForwardIterator1 | std::search (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __predicate)
template<typename _ForwardIterator , typename _Integer , typename _Tp >
_ForwardIterator | std::search_n (_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp &__val)
template<typename _ForwardIterator , typename _Integer , typename _Tp , typename _BinaryPredicate >
_ForwardIterator | std::search_n (_ForwardIterator __first, _ForwardIterator __last, _Integer __count, const _Tp &__val, _BinaryPredicate __binary_pred)

## Detailed Description

## Function Documentation

template<typename _ForwardIterator >

_ForwardIterator std::adjacent_find | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last
| ) |  |

Find two adjacent values in a sequence that are equal.

Parameters

  __first | A forward iterator.
  __last | A forward iterator.

Returns
  The first iterator `i` such that `i` and `i+1` are both valid iterators in ``[__first,__last) and such that `*i` == `*`(i+1), or `__last` if no such iterator exists.

Definition at line 4715 of file stl_algo.h.

template<typename _ForwardIterator , typename _BinaryPredicate >

_ForwardIterator std::adjacent_find | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last,
|  | _BinaryPredicate | __binary_pred
| ) |  |

Find two adjacent values in a sequence using a predicate.

Parameters

  __first | A forward iterator.
  __last | A forward iterator.
  __binary_pred | A binary predicate.

Returns
  The first iterator `i` such that `i` and `i+1` are both valid iterators in ``[__first,__last) and such that `__binary_pred`(*i,*(i+1)) is true, or `__last` if no such iterator exists.

Definition at line 4747 of file stl_algo.h.

template<typename _InputIterator , typename _Predicate >

bool std::all_of | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

inline

Checks that a predicate is true for all the elements of a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  True if the check is true, false otherwise.

Returns true if `__pred` is true for each element in the range ``[__first,__last), and false otherwise.

Definition at line 753 of file stl_algo.h.

References std::find_if_not().

template<typename _InputIterator , typename _Predicate >

bool std::any_of | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

inline

Checks that a predicate is false for at least an element of a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  True if the check is true, false otherwise.

Returns true if an element exists in the range ``[__first,__last) such that `__pred` is true, and false otherwise.

Definition at line 788 of file stl_algo.h.

References std::none_of().

template<typename _InputIterator , typename _Tp >

iterator_traits<_InputIterator>::difference_type std::count | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | const _Tp & | __value
| ) |  |

Count the number of copies of a value in a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __value | The value to be counted.

Returns
  The number of iterators `i` in the range ``[__first,__last) for which `*i` == `__value`

Definition at line 4779 of file stl_algo.h.

template<typename _InputIterator , typename _Predicate >

iterator_traits<_InputIterator>::difference_type std::count_if | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

Count the elements of a sequence for which a predicate is true.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  The number of iterators `i` in the range ``[__first,__last) for which `__pred(*i)` is true.

Definition at line 4804 of file stl_algo.h.

Referenced by std::is_permutation().

template<typename _IIter1 , typename _IIter2 , typename _BinaryPredicate >

bool std::equal | ( | _IIter1 | __first1,
|  | _IIter1 | __last1,
|  | _IIter2 | __first2,
|  | _BinaryPredicate | __binary_pred
| ) |  |

inline

Tests a range for element-wise equality.

Parameters

  __first1 | An input iterator.
  __last1 | An input iterator.
  __first2 | An input iterator.
  __binary_pred | A binary predicate functor.

Returns
  A boolean true or false.

This compares the elements of two ranges using the binary_pred parameter, and returns true or false depending on whether all of the corresponding elements of the ranges are equal.

Definition at line 1052 of file stl_algobase.h.

template<typename _II1 , typename _II2 >

bool std::equal | ( | _II1 | __first1,
|  | _II1 | __last1,
|  | _II2 | __first2
| ) |  |

inline

Tests a range for element-wise equality.

Parameters

  __first1 | An input iterator.
  __last1 | An input iterator.
  __first2 | An input iterator.

Returns
  A boolean true or false.

This compares the elements of two ranges using `==` and returns true or false depending on whether all of the corresponding elements of the ranges are equal.

Definition at line 1020 of file stl_algobase.h.

Referenced by std::operator==().

template<typename _InputIterator , typename _Tp >

_InputIterator std::find | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | const _Tp & | __val
| ) |  |

inline

Find the first occurrence of a value in a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __val | The value to find.

Returns
  The first iterator `i` in the range ``[__first,__last) such that `*i` == `__val`, or `__last` if no such iterator exists.

Definition at line 4589 of file stl_algo.h.

References std::__find(), and std::__iterator_category().

template<typename _ForwardIterator1 , typename _ForwardIterator2 >

_ForwardIterator1 std::find_end | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2,
|  | _ForwardIterator2 | __last2
| ) |  |

inline

Find last matching subsequence in a sequence.

Parameters

  __first1 | Start of range to search.
  __last1 | End of range to search.
  __first2 | Start of sequence to match.
  __last2 | End of sequence to match.

Returns
  The last iterator `i` in the range ``[__first1,__last1-(__last2-__first2)) such that `*`(i+N) == `*`(__first2+N) for each `N` in the range ``[0,__last2-__first2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for a sub-sequence that compares equal value-by-value with the sequence given by ``[__first2,__last2) and returns an iterator to the __first element of the sub-sequence, or `__last1` if the sub-sequence is not found. The sub-sequence will be the last such subsequence contained in [__first,__last1).

Because the sub-sequence must lie completely within the range ``[__first1,__last1) it must start at a position less than `__last1-`(__last2-__first2) where `__last2-__first2` is the length of the sub-sequence. This means that the returned iterator `i` will be in the range ``[__first1,__last1-(__last2-__first2))

Definition at line 671 of file stl_algo.h.

References std::__iterator_category().

template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >

_ForwardIterator1 std::find_end | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2,
|  | _ForwardIterator2 | __last2,
|  | _BinaryPredicate | __comp
| ) |  |

inline

Find last matching subsequence in a sequence using a predicate.

Parameters

  __first1 | Start of range to search.
  __last1 | End of range to search.
  __first2 | Start of sequence to match.
  __last2 | End of sequence to match.
  __comp | The predicate to use.

Returns
  The last iterator `i` in the range ``[__first1,__last1-(__last2-__first2)) such that `predicate`(*(i+N), ``(__first2+N)) is true for each `N` in the range ``[0,__last2-__first2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for a sub-sequence that compares equal value-by-value with the sequence given by ``[__first2,__last2) using comp as a predicate and returns an iterator to the first element of the sub-sequence, or `__last1` if the sub-sequence is not found. The sub-sequence will be the last such subsequence contained in [__first,__last1).

Because the sub-sequence must lie completely within the range ``[__first1,__last1) it must start at a position less than `__last1-`(__last2-__first2) where `__last2-__first2` is the length of the sub-sequence. This means that the returned iterator `i` will be in the range ``[__first1,__last1-(__last2-__first2))

Definition at line 719 of file stl_algo.h.

References std::__iterator_category().

template<typename _InputIterator , typename _ForwardIterator >

_InputIterator std::find_first_of | ( | _InputIterator | __first1,
|  | _InputIterator | __last1,
|  | _ForwardIterator | __first2,
|  | _ForwardIterator | __last2
| ) |  |

Find element from a set in a sequence.

Parameters

  __first1 | Start of range to search.
  __last1 | End of range to search.
  __first2 | Start of match candidates.
  __last2 | End of match candidates.

Returns
  The first iterator `i` in the range ``[__first1,__last1) such that `*i` == `*`(i2) such that i2 is an iterator in [__first2,__last2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for an element that is equal to some element in the range [__first2,__last2). If found, returns an iterator in the range [__first1,__last1), otherwise returns `__last1`.

Definition at line 4643 of file stl_algo.h.

template<typename _InputIterator , typename _ForwardIterator , typename _BinaryPredicate >

_InputIterator std::find_first_of | ( | _InputIterator | __first1,
|  | _InputIterator | __last1,
|  | _ForwardIterator | __first2,
|  | _ForwardIterator | __last2,
|  | _BinaryPredicate | __comp
| ) |  |

Find element from a set in a sequence using a predicate.

Parameters

  __first1 | Start of range to search.
  __last1 | End of range to search.
  __first2 | Start of match candidates.
  __last2 | End of match candidates.
  __comp | Predicate to use.

Returns
  The first iterator `i` in the range ``[__first1,__last1) such that `comp`(*i, `*`(i2)) is true and i2 is an iterator in [__first2,__last2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for an element that is equal to some element in the range [__first2,__last2). If found, returns an iterator in the range [__first1,__last1), otherwise returns `__last1`.

Definition at line 4684 of file stl_algo.h.

template<typename _InputIterator , typename _Predicate >

_InputIterator std::find_if | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

inline

Find the first element in a sequence for which a predicate is true.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  The first iterator `i` in the range ``[__first,__last) such that `__pred(*i)` is true, or `__last` if no such iterator exists.

Definition at line 4613 of file stl_algo.h.

References std::__find_if(), and std::__iterator_category().

template<typename _InputIterator , typename _Predicate >

_InputIterator std::find_if_not | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

inline

Find the first element in a sequence for which a predicate is false.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  The first iterator `i` in the range ``[__first,__last) such that `__pred(*i)` is false, or `__last` if no such iterator exists.

Definition at line 803 of file stl_algo.h.

References std::__find_if_not().

Referenced by std::all_of(), and std::is_partitioned().

template<typename _InputIterator , typename _Function >

_Function std::for_each | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Function | __f
| ) |  |

Apply a function to every element of a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __f | A unary function object.

Returns
  `__f` (std::move(`__f`) in C++0x).

Applies the function object `__f` to each element in the range ``[first,last). `__f` must not modify the order of the sequence. If `__f` has a return value it is ignored.

Definition at line 4568 of file stl_algo.h.

template<typename _ForwardIterator1 , typename _ForwardIterator2 >

bool std::is_permutation | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2
| ) |  |

Checks whether a permutaion of the second sequence is equal to the first sequence.

Parameters

  __first1 | Start of first range.
  __last1 | End of first range.
  __first2 | Start of second range.

Returns
  true if there exists a permutation of the elements in the range [__first2, __first2 + (__last1 - __first1)), beginning with ForwardIterator2 begin, such that equal(__first1, __last1, begin) returns true; otherwise, returns false.

Definition at line 4294 of file stl_algo.h.

References std::advance(), std::count(), and std::distance().

template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >

bool std::is_permutation | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2,
|  | _BinaryPredicate | __pred
| ) |  |

Checks whether a permutation of the second sequence is equal to the first sequence.

Parameters

  __first1 | Start of first range.
  __last1 | End of first range.
  __first2 | Start of second range.
  __pred | A binary predicate.

Returns
  true if there exists a permutation of the elements in the range [__first2, __first2 + (__last1 - __first1)), beginning with ForwardIterator2 begin, such that equal(__first1, __last1, __begin, __pred) returns true; otherwise, returns false.

Definition at line 4340 of file stl_algo.h.

References std::advance(), std::bind(), std::count_if(), and std::distance().

template<typename _InputIterator1 , typename _InputIterator2 >

pair<_InputIterator1, _InputIterator2> std::mismatch | ( | _InputIterator1 | __first1,
|  | _InputIterator1 | __last1,
|  | _InputIterator2 | __first2
| ) |  |

Finds the places in ranges which don't match.

Parameters

  __first1 | An input iterator.
  __last1 | An input iterator.
  __first2 | An input iterator.

Returns
  A pair of iterators pointing to the first mismatch.

This compares the elements of two ranges using `==` and returns a pair of iterators. The first iterator points into the first range, the second iterator points into the second range, and the elements pointed to by the iterators are not equal.

Definition at line 1252 of file stl_algobase.h.

template<typename _InputIterator1 , typename _InputIterator2 , typename _BinaryPredicate >

pair<_InputIterator1, _InputIterator2> std::mismatch | ( | _InputIterator1 | __first1,
|  | _InputIterator1 | __last1,
|  | _InputIterator2 | __first2,
|  | _BinaryPredicate | __binary_pred
| ) |  |

Finds the places in ranges which don't match.

Parameters

  __first1 | An input iterator.
  __last1 | An input iterator.
  __first2 | An input iterator.
  __binary_pred | A binary predicate functor.

Returns
  A pair of iterators pointing to the first mismatch.

This compares the elements of two ranges using the binary_pred parameter, and returns a pair of iterators. The first iterator points into the first range, the second iterator points into the second range, and the elements pointed to by the iterators are not equal.

Definition at line 1290 of file stl_algobase.h.

template<typename _InputIterator , typename _Predicate >

bool std::none_of | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _Predicate | __pred
| ) |  |

inline

Checks that a predicate is false for all the elements of a sequence.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __pred | A predicate.

Returns
  True if the check is true, false otherwise.

Returns true if `__pred` is false for each element in the range ``[__first,__last), and false otherwise.

Definition at line 770 of file stl_algo.h.

Referenced by std::any_of(), and std::is_partitioned().

template<typename _ForwardIterator1 , typename _ForwardIterator2 >

_ForwardIterator1 std::search | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2,
|  | _ForwardIterator2 | __last2
| ) |  |

Search a sequence for a matching sub-sequence.

Parameters

  __first1 | A forward iterator.
  __last1 | A forward iterator.
  __first2 | A forward iterator.
  __last2 | A forward iterator.

Returns
  The first iterator `i` in the range ``[__first1,__last1-(__last2-__first2)) such that `*`(i+N) == `*`(__first2+N) for each `N` in the range ``[0,__last2-__first2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for a sub-sequence that compares equal value-by-value with the sequence given by ``[__first2,__last2) and returns an iterator to the first element of the sub-sequence, or `__last1` if the sub-sequence is not found.

Because the sub-sequence must lie completely within the range ``[__first1,__last1) it must start at a position less than `__last1-`(__last2-__first2) where `__last2-__first2` is the length of the sub-sequence.

This means that the returned iterator `i` will be in the range ``[__first1,__last1-(__last2-__first2))

Definition at line 4846 of file stl_algo.h.

template<typename _ForwardIterator1 , typename _ForwardIterator2 , typename _BinaryPredicate >

_ForwardIterator1 std::search | ( | _ForwardIterator1 | __first1,
|  | _ForwardIterator1 | __last1,
|  | _ForwardIterator2 | __first2,
|  | _ForwardIterator2 | __last2,
|  | _BinaryPredicate | __predicate
| ) |  |

Search a sequence for a matching sub-sequence using a predicate.

Parameters

  __first1 | A forward iterator.
  __last1 | A forward iterator.
  __first2 | A forward iterator.
  __last2 | A forward iterator.
  __predicate | A binary predicate.

Returns
  The first iterator `i` in the range ``[__first1,__last1-(__last2-__first2)) such that `__predicate`(*(i+N),*(__first2+N)) is true for each `N` in the range ``[0,__last2-__first2), or `__last1` if no such iterator exists.

Searches the range ``[__first1,__last1) for a sub-sequence that compares equal value-by-value with the sequence given by ``[__first2,__last2), using `__predicate` to determine equality, and returns an iterator to the first element of the sub-sequence, or `__last1` if no such iterator exists.

See Also
  search(_ForwardIter1, _ForwardIter1, _ForwardIter2, _ForwardIter2)

Definition at line 4918 of file stl_algo.h.

template<typename _ForwardIterator , typename _Integer , typename _Tp >

_ForwardIterator std::search_n | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last,
|  | _Integer | __count,
|  | const _Tp & | __val
| ) |  |

Search a sequence for a number of consecutive values.

Parameters

  __first | A forward iterator.
  __last | A forward iterator.
  __count | The number of consecutive values.
  __val | The value to find.

Returns
  The first iterator `i` in the range ``[__first,__last-__count) such that `*`(i+N) == `__val` for each `N` in the range ``[0,__count), or `__last` if no such iterator exists.

Searches the range ``[__first,__last) for `count` consecutive elements equal to `__val`.

Definition at line 4992 of file stl_algo.h.

References std::__iterator_category(), and std::__search_n().

template<typename _ForwardIterator , typename _Integer , typename _Tp , typename _BinaryPredicate >

_ForwardIterator std::search_n | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last,
|  | _Integer | __count,
|  | const _Tp & | __val,
|  | _BinaryPredicate | __binary_pred
| ) |  |

Search a sequence for a number of consecutive values using a predicate.

Parameters

  __first | A forward iterator.
  __last | A forward iterator.
  __count | The number of consecutive values.
  __val | The value to find.
  __binary_pred | A binary predicate.

Returns
  The first iterator `i` in the range ``[__first,__last-__count) such that `__binary_pred`(*(i+N),__val) is true for each `N` in the range ``[0,__count), or `__last` if no such iterator exists.

Searches the range ``[__first,__last) for `__count` consecutive elements for which the predicate returns true.

Definition at line 5030 of file stl_algo.h.

References std::__iterator_category(), and std::__search_n().