38 Iter2 first2, Iter2 last2,
40 while (first1 != last1
42 if (
auto c = cmp(*first1, *first2); c != 0)
return c;
47 return first1 != last1 ? std::strong_ordering::greater
48 : first2 != last2 ? std::strong_ordering::less
49 : std::strong_ordering::equal;
72template <InputIterator Iter1,
73 InputIterator Iter2,
typename Pred = equal_to>
74 requires Predicate<Pred,
75 typename IteratorTraits<Iter1>::reference,
76 typename IteratorTraits<Iter2>::reference>
77bool equal(Iter1 first1, Iter1 last1, Iter2 first2, Pred pred = Pred()) {
78 while (first1 != last1) {
79 if (!pred(*first1, *first2))
return false;
103template <InputIterator Iter1,
104 InputIterator Iter2,
typename Pred = equal_to>
105 requires Predicate<Pred,
106 typename IteratorTraits<Iter1>::reference,
107 typename IteratorTraits<Iter2>::reference>
108bool equal(Iter1 first1, Iter1 last1,
109 Iter2 first2, Iter2 last2, Pred pred = Pred()) {
110 while (first1 != last1 && first2 != last2) {
111 if (!pred(*first1, *first2))
return false;
116 return first1 == last1 && first2 == last2;
126template <RandomAccessIterator Iter1,
127 RandomAccessIterator Iter2,
typename Pred = equal_to>
128 requires Predicate<Pred,
129 typename IteratorTraits<Iter1>::reference,
130 typename IteratorTraits<Iter2>::reference>
131bool equal(Iter1 first1, Iter1 last1,
132 Iter2 first2, Iter2 last2, Pred pred = Pred()) {
133 if (last1 - first1 != last2 - first2)
return false;
135 while (first1 != last1 && first2 != last2) {
136 if (!pred(*first1, *first2))
return false;
bool equal(Iter1 first1, Iter1 last1, Iter2 first2, Pred pred=Pred())
Checks whether given ranges are equal.
Definition algo_base.h:77
auto lexicographical_compare_three_way(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, Cmp cmp=Cmp())
Compares ranges lexicographically using C++20 three-way comparation.
Definition algo_base.h:37