Я студент, изучающий STL C ++, и у меня простой вопрос.
Мне было интересно узнать, как реализовать функцию include в библиотеке алгоритмов. Смотрите этот код
(этот код от https://en.cppreference.com/w/cpp/algorithm/includes)
template<class InputIt1, class InputIt2>
bool includes(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) {
for (; first2 != last2; ++first1) {
if (first1 == last1 || *first2 < *first1)
return false;
if ( !(*first1 < *first2) )
++first2;
}
return true;
}
В этом разделе есть вопросы.
if ( !(*first1 < *first2) )
++first2;
Эта часть отображается в виде кода, который определяет, равен ли *first1
*first2
, чтобы определить, является ли данная частичная последовательность частью упорядоченной последовательности. Я думаю.
Если так, то *first1 == * first2
кажется достаточно, мне интересно, почему !(first1 < first2)
.
Есть ли какие-либо особые причины для этого состояния ??