template< class SinglePassRange1, class SinglePassRange2 > bool equal(const SinglePassRange1& rng1, const SinglePassRange2& rng2); template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate > bool equal(const SinglePassRange1& rng1, const SinglePassRange2& rng2, BinaryPredicate pred);
equal
returns true
if distance(rng1)
is equal to the distance(rng2)
and for each element x
in rng1
, the corresponding
element y
in rng2
is equal. Otherwise false
is returned.
In this range version of equal
it is perfectly acceptable to pass in two ranges of unequal lengths.
Elements are considered equal in the non-predicate version if operator==
returns true
. Elements are
considered equal in the predicate version if pred(x,y)
is true
.
Defined in the header file boost/range/algorithm/equal.hpp
For the non-predicate versions:
SinglePassRange1
is a model of the Single
Pass Range Concept.
SinglePassRange2
is a model of the Single
Pass Range Concept.
SinglePassRange1
's
value type is a model of the EqualityComparableConcept
.
SinglePassRange2
's
value type is a model of the EqualityComparableConcept
.
SinglePassRange1
's
value type can be compared for equality with SinglePassRange2
's
value type.
For the predicate versions:
SinglePassRange1
is a model of the Single
Pass Range Concept.
SinglePassRange2
is a model of the Single
Pass Range Concept.
BinaryPredicate
is
a model of the BinaryPredicateConcept
.
SinglePassRange1
's
value type is convertible to BinaryPredicate
's
first argument type.
SinglePassRange2
's
value type is convertible to BinaryPredicate
's
second argument type.
Linear. At most min(distance(rng1), distance(rng2))
comparisons.