std::char_traits<char>::eq/lt, std::char_traits<wchar_t>::eq/lt, std::char_traits<char8_t>::eq/lt, std::char_traits<char16_t>::eq/lt, std::char_traits<char32_t>::eq/lt
From cppreference.com
< cpp | string | char traits
| static bool eq( char_type a, char_type b ); |
(1) | (C++11 以降 constexpr) (C++11 以降 noexcept) |
| static bool lt( char_type a, char_type b ); |
(2) | (C++11 以降 constexpr) (C++11 以降 noexcept) |
2つの文字を比較します。
1) a と b を等価比較します。
char_type が char の場合は、- static_cast<unsigned char>(a) == static_cast<unsigned char>(b) と同等に動作します。
- それ以外の場合は、a == b と同等に動作します。
2) a と b を全順序比較します。
char_type が char の場合は、- static_cast<unsigned char>(a) < static_cast<unsigned char>(b) と同等に動作します。
- それ以外の場合は、a < b と同等に動作します。
CharTraits を参照してください。これは、X::eq および X::lt に対する文字特性の一般的な要件を示しています。
目次 |
[編集] パラメータ
| a, b | - | 比較する文字の値 |
[編集] 戻り値
1) true : a と b が等しい場合。false : それ以外の場合。
2) true : a が b より小さい場合。false : それ以外の場合。
[編集] 計算量
定数。
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 467 | C++98 | std::char_traits<char> の場合、eq() と lt() のセマンティクスがそれぞれ == および < の組み込み演算子と同じように変更されました[1]。 |
変更後のセマンティクスは、== および < の組み込み演算子を unsigned char に対して使用するのと同等です。 |
- ↑ ほとんどの実装では、効率のために std::memcmp() を呼び出します。これは、データを unsigned char の配列として解釈します。そのような実装で char が 符号付き の場合、std::char_traits<char> は CharTraits の要件を満たせなくなります。