std::lexicographical_compare_3way
提供: cppreference.com
ヘッダ <algorithm> で定義 | ||
template<class InputIt1, class InputIt2, class Cmp > constexprauto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1, | (1) | (C++20およびそれ以降) |
template<class InputIt1, class InputIt2 > constexprauto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1, | (2) | (C++20およびそれ以降) |
三方比較を使用して2つの範囲 [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, [](constauto& t, constauto& u){return std::compare_3way(t, u);});
目次 |
[編集]引数
first1, last1 | - | 1つめの調べる要素の範囲 |
first2, last2 | - | 2つめの調べる要素の範囲 |
comp | - | 関数オブジェクトの型。 戻り値の型が5つの比較カテゴリ型 (strong_equality, weak_equality, strong_ordering, weak_ordering, partial_ordering) のいずれかでない場合、動作は未定義です。 |
型の要件 | ||
-InputIt1, InputIt2 は InputIterator の要件を満たさなければなりません。 |
[編集]戻り値
上で定義されている通りの比較カテゴリ型。
[編集]例
This section is incomplete Reason: no example |
[編集]関連項目
(C++20) | 三方比較を使用して2つの値を比較します (関数テンプレート) |