Table G.13 summarizes the nonmodifying sequence operations. Arguments are not shown, and overloaded functions are listed just once. A fuller description, including the prototypes, follows the table. Thus, you can scan the table to get an idea of what a function does and then look up the details if you find the function appealing.
Now let’s take a more detailed look at these nonmodifying sequence operations. For each function, the discussion shows the prototype(s), followed by a brief explanation. Pairs of iterators indicate ranges, with the chosen template parameter name indicating the type of iterator. As usual a range in the form [first
, last
) goes from first
up to, but not including, last
. Some functions take two ranges, which need not be in the same kind of container. For example, you can use equal()
to compare a list to a vector. Functions passed as arguments are function objects, which can be pointers (of which function names are an example) or objects for which the ()
operation is defined. As in Chapter 16, a predicate is a Boolean function with one argument, and a binary predicate is a Boolean function with two arguments. (The functions need not be type bool
, as long as they return 0
for false
and a nonzero value for true
.)
all_of()
(C++11)template<class InputIterator, class Predicate>
bool all_of(InputIterator first, InputIterator last,
Predicate pred);
The all_of()
function returns true
if pred(*i)
is true
for every iterator in the range [first,last)
or if the range is empty. Otherwise the function returns false
.
any_of()
(C++11)template<class InputIterator, class Predicate>
bool any_of(InputIterator first, InputIterator last,
Predicate pred);
The any_of()
function returns false
if pred(*i)
is false
for every iterator in the range [first,last)
or if the range is empty. Otherwise the function returns true
.
none_of()
(C++11)template<class InputIterator, class Predicate>
bool none_of(InputIterator first, InputIterator last,
Predicate pred);
The none_of()
function returns true
if pred(*i)
is false
for every iterator in the range [first,last)
or if the range is empty. Otherwise the function returns false
.
for_each()
template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last,
Function f);
The for_each()
function applies function object f
to each element in the range [first
, last
). It also returns f
.
find()
template<class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last,
const T& value);
The find()
function returns an iterator to the first element in the range [first
, last
) that has the value value
; it returns last
if the item is not found.
find_if()
template<class InputIterator, class Predicate>
InputIterator find_if(InputIterator first, InputIterator last,
Predicate pred);
The find_if()
function returns an iterator it
to the first element in the range [first
, last
) for which the function object call pred(*i)
is true
; it returns last
if the item is not found.
find_if_not()
template<class InputIterator, class Predicate>
InputIterator find_if_not(InputIterator first, InputIterator last,
Predicate pred);
The find_if_not()
function returns an iterator, it
, to the first element in the range [first
, last
) for which the function object call pred(*i)
is false
; it returns last
if the item is not found.
find_end()
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_end(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
ForwardIterator1 find_end(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
The find_end()
function returns an iterator it
to the last element in the range [first1
, last1
) that marks the beginning of a subsequence that matches the contents of the range [first2
, last2
). The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
. Both return last1
if the item is not found.
find_first_of()
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_first_of(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
ForwardIterator1 find_first_of(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
The find_first_of()
function returns an iterator it
to the first element in the range [first1
, last1
) that matches any element of the range [first2
, last2
). The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
. Both return last1
if the item is not found.
adjacent_find()
template<class ForwardIterator>
ForwardIterator adjacent_find(ForwardIterator first,
ForwardIterator last);
template<class ForwardIterator, class BinaryPredicate>
ForwardIterator adjacent_find(ForwardIterator first,
ForwardIterator last, BinaryPredicate pred);
The adjacent_find()
function returns an iterator it
to the first element in the range [first1
, last1
) such that the element matches the following element. The function returns last
if no such pair is found. The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
.
count()
template<class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count(InputIterator first, InputIterator last, const T& value);
The count()
function returns the number of elements in the range [first
, last
) that match the value value
. The ==
operator for the value type is used to compare values. The return type is an integer type that is large enough to contain the maximum number of items the container can hold.
count_if()
template<class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);
The count if()
function returns the number of elements in the range [first
, last
) for which the function object pred
returns a true
value when passed the element as an argument.
mismatch()
template<class InputIterator1, class InputIterator2>
pair<InputIterator1, InputIterator2>
mismatch(InputIterator1 first1,
InputIterator1 last1, InputIterator2 first2);
template<class InputIterator1, class InputIterator2,
class BinaryPredicate>
pair<InputIterator1, InputIterator2>
mismatch(InputIterator1 first1,
InputIterator1 last1, InputIterator2 first2,
BinaryPredicate pred);
Each of the mismatch()
functions finds the first element in the range [first1
, last1
) that doesn’t match the corresponding element in the range beginning at first2
and returns a pair holding iterators to the two mismatching elements. If no mismatch is found, the return value is pair<last1, first2 + (last1 - first1)>
. The first version uses the ==
operator to test matching. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
don’t match if pred(*it1, *it2)
is false
.
equal()
template<class InputIterator1, class InputIterator2>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2);
template<class InputIterator1, class InputIterator2,
class BinaryPredicate>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred);
The equal()
function returns true
if each element in the range [first1
, last1
) matches the corresponding element in the sequence beginning at first2
and false
otherwise. The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
.
is_permutation()
(C++11)template<class InputIterator1, class InputIterator2>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2);
template<class InputIterator1, class InputIterator2,
class BinaryPredicate>
bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred);
The is_permutation()
function returns true
if each element in the range [first1
, last1
) matches the corresponding element in some permutation of the equal-length sequence beginning at first2
; it returns false
otherwise. The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
.
search()
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
ForwardIterator1 search(
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
The search()
function finds the first occurrence in the range [first1
, last1
) that matches the corresponding sequence found in the range [first2
, last2
). It returns last1
if no such sequence is found. The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
.
search_n()
template<class ForwardIterator, class Size, class T>
ForwardIterator search_n(ForwardIterator first, ForwardIterator last,
Size count, const T& value);
template<class ForwardIterator, class Size, class T, class BinaryPredicate>
ForwardIterator search_n(ForwardIterator first, ForwardIterator last,
Size count, const T& value, BinaryPredicate pred);
The search_n()
function finds the first occurrence in the range [first1
, last1
) that matches the sequence consisting of count
consecutive occurrences of value
. It returns last1
if no such sequence is found. The first version uses the ==
operator for the value type to compare elements. The second version uses the binary predicate function object pred
to compare elements. That is, elements pointed to by it1
and it2
match if pred(*it1, *it2)
is true
.
3.21.248.162