std::lexicographical_compare_3way

来自cppreference.com
< cpp‎ | algorithm
 
 
算法库
执行策略 (C++17)
不修改序列的操作
(C++11)
(C++11)
(C++11)
(C++17)
lexicographical_compare_3way
(C++20)

修改序列的操作
未初始化存储上的操作
划分操作
排序操作
(C++11)
二分搜索操作
集合操作(在已排序范围上)
堆操作
(C++11)
最小/最大操作
(C++11)
(C++17)
排列
数值运算
C 库
 
定义于头文件 <algorithm>
template< class InputIt1, class InputIt2, class Cmp >

constexpr auto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1,
                                             InputIt2 b2, InputIt2 e2,
                                             Cmp comp)

-> std::common_comparison_category_t<decltype(comp(*b1, *b2)), std::strong_ordering>;
(1) (C++20 起)
template< class InputIt1, class InputIt2 >

constexpr auto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1,

                                             InputIt2 b2, InputIt2 e2);
(2) (C++20 起)

用三路比较,以字典序比较二个范围 [first1, last1)[first2, last2) ,并产生最强可应用比较类别类型的结果。

1) 表现为定义如下:
for ( ; b1 != e1 && b2 != e2; void(++b1), void(++b2) )
  if (auto cmp = comp(*b1,*b2); cmp != 0)
    return cmp;
  return b1 != e1 ? std::strong_ordering::greater :
         b2 != e2 ? std::strong_ordering::less :
                    std::strong_ordering::equal;
2) 表现为定义如下:
return std::lexicographical_compare_3way(b1, e1, b2, e2,
           [](const auto& t, const auto& u) {
               return std::compare_3way(t, u);
           });

目录

[编辑] 参数

first1, last1 - 要检验的第一元素范围
first2, last2 - 要检验的第二元素范围
comp - 函数对象类型。若其返回类型不是五个比较类别类型( strong_equality 、 weak_equality 、 strong_ordering 、 weak_ordering 或 partial_ordering )之一则行为未定义。
类型要求
-
InputIt1, InputIt2 必须满足 InputIterator 的要求。

[编辑] 返回值

定义如上的比较类别类型的值。

[编辑] 示例

[编辑] 参阅

用三路比较比较二个值
(函数模板) [编辑]