我是一名学习 STL C++ 的学生,有一个简单的问题。
我在学习如何在算法库中实现包含函数时想知道。请参阅此代码(此代码来自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;
}
Run Code Online (Sandbox Code Playgroud)
本节有问题。
if ( !(*first1 < *first2) )
++first2;
Run Code Online (Sandbox Code Playgroud)
这部分表现为判断是否*first1等于的代码,*first2以确定给定的部分序列是否是有序序列的一部分。我认为。
如果是这样,*first1 == * first2似乎足够了,我想知道为什么!(first1 < first2)。
这种情况有什么特殊原因吗??
该类型所需的概念之一InputIt1是它实现了<运算符。(其他比较器==, !=, <=,>=和>都可以根据<是否允许表达式被 否定来编写!,尽管形式上的替换==被称为等价。)
因此,C++ 标准库函数根据<.
参考:https : //en.cppreference.com/w/cpp/named_req/LessThanComparable
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |