名前空間
変種
操作

std::less

提供: cppreference.com
< cpp‎ | utility‎ | functional
 
 
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
バインド
(C++11)
関数呼び出し
(C++17)
恒等関数オブジェクト
(C++20)
参照ラッパー
(C++11)(C++11)
演算子ラッパー
否定子
(C++17)
検索子
古いバインダとアダプタ
(C++17以前)
(C++17以前)
(C++17以前)
(C++17以前)
(C++17以前)(C++17以前)(C++17以前)(C++17以前)
(C++20以前)
(C++20以前)
(C++17以前)(C++17以前)
(C++17以前)(C++17以前)

(C++17以前)
(C++17以前)(C++17以前)(C++17以前)(C++17以前)
(C++20以前)
(C++20以前)
 
ヘッダ <functional> で定義
template< class T >
struct less;
(C++14以前)
template< class T = void >
struct less;
(C++14およびそれ以降)

比較を行うための関数オブジェクト。 特殊化されていなければ、型 T に対する operator< を呼びます。

目次

[編集] 特殊化

任意のポインタ型に対する std::less の特殊化は、たとえ組み込みの operator< がそうでなくても、厳密な全順序を生成します。 厳密な全順序はそのポインタ型に対する std::lessstd::greaterstd::less_equal および std::greater_equal の特殊化に渡って一貫しており、また対応する組み込みの演算子 (<><= および >=) によって与えられる部分順序とも一貫しています。

特殊化 std::less<void> の関数呼び出し演算子がポインタを比較する組み込みの演算子を呼ぶ場合、たとえ組み込みの operator< がそうでなくても、厳密な全順序を生成します。 この厳密な全順序は特殊化 std::less<void>std::greater<void>std::less_equal<void> および std::greater_equal<void> に渡って一貫しており、また対応する組み込みの演算子によって与えられる部分順序とも一貫しています。

(C++14およびそれ以降)

標準ライブラリは T が指定されない場合の引数型と戻り値型を推定する std::less の特殊化を提供します。

引数と戻り値の型を推定する x < y を実装する関数オブジェクト
(クラステンプレートの特殊化) [edit]
(C++14およびそれ以降)

メンバ型

定義
result_type(C++17で非推奨) bool
first_argument_type(C++17で非推奨) T
second_argument_type(C++17で非推奨) T
(C++20以前)

[編集] メンバ関数

operator()
第1引数が第2引数より小さいかどうか調べます
(パブリックメンバ関数)

std::less::operator()

bool operator()( const T& lhs, const T& rhs ) const;
(C++14以前)
constexpr bool operator()( const T& lhs, const T& rhs ) const;
(C++14およびそれ以降)

lhsrhs より小さいかどうか調べます。

引数

lhs, rhs - 比較する値

戻り値

lhs < rhs であれば true、そうでなければ false

例外

(なし)

実装例

constexpr bool operator()(const T &lhs, const T &rhs) const 
{
    return lhs < rhs;
}

[編集]

#include <functional>
#include <iostream>
 
template <typename A, typename B, typename U = std::less<>>
bool f(A a, B b, U u = U())
{
    return u(a, b);
}
 
int main() 
{
    std::cout << std::boolalpha;   
    std::cout << f(5, 20) << '\n';
    std::cout << f(100, 10) << '\n';
}

出力:

true
false

[編集] 関連項目

x > y を実装する関数オブジェクト
(クラステンプレート) [edit]