operator==,!=,<,<=,>,>=,<=> (std::map)
|
定義済みヘッダー
<map>
|
||
| (1) | (C++26以降constexpr) | |
| (2) | (C++20まで) | |
| (3) | (C++20まで) | |
| (4) | (C++20まで) | |
| (5) | (C++20まで) | |
| (6) | (C++20まで) | |
| (7) |
(C++20以降)
(C++26以降 constexpr) |
|
2つの
map
の内容を比較します。
value_type
を
map
の値型(すなわち、
typename
map
::
value_type
)とします:
|
return
std::
distance
(
lhs.
begin
(
)
, lhs.
end
(
)
)
|
(C++14まで) |
|
return std:: equal ( lhs. begin ( ) , lhs. end ( ) , rhs. begin ( ) , rhs. end ( ) ) ; |
(C++14から) |
rhs. begin ( ) , rhs. end ( ) ) ; 。
-
value_typeが LessThanComparable ではない場合。 - operator < が 全順序 を確立しない場合。
rhs.
begin
(
)
, rhs.
end
(
)
,
synth-three-way
)
.
-
Tがthree_way_comparableをモデルにしていない。 -
operator
<
が(const修飾された可能性のある)
value_type型の値に対して定義されていない。 - operator < が 全順序 を確立しない。
|
|
(C++20以降) |
目次 |
パラメータ
| lhs, rhs | - |
map
を比較する内容を持つ
|
戻り値
| 演算子 |
lhs
と
rhs
が等しい場合 |
lhs
が
辞書順で大きい場合 |
rhs
が
辞書順で大きい場合 |
|---|---|---|---|
| operator == | true | false | |
| operator ! = | false | true | |
| operator < | false | false | true |
| operator <= | true | ||
| operator > | false | true | false |
| operator >= | true | ||
| operator <=> | 0に等しい値 | 0より大きい値 | 0より小さい値 |
計算量
map
のサイズに対して線形時間。
map
のサイズに対して線形。
注記
|
関係演算子は
|
(C++20まで) |
|
関係演算子は定義されません。書き換え候補である operator <=> がオーバーロード解決によって選択されます。
operator
<=>
は可能な場合
|
(C++20以降) |
これらの非メンバ比較演算子は、要素を比較するために
Compare
を使用しません。
例
#include <cassert> #include <compare> #include <map> int main() { std::map<int, char> a{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::map<int, char> b{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::map<int, char> c{{7, 'Z'}, {8, 'Y'}, {9, 'X'}, {10, 'W'}}; assert ("" "等しいコンテナの比較:" && (a != b) == false && (a == b) == true && (a < b) == false && (a <= b) == true && (a > b) == false && (a >= b) == true && (a <=> b) != std::weak_ordering::less && (a <=> b) != std::weak_ordering::greater && (a <=> b) == std::weak_ordering::equivalent && (a <=> b) >= 0 && (a <=> b) <= 0 && (a <=> b) == 0 && "等しくないコンテナの比較:" && (a != c) == true && (a == c) == false && (a < c) == true && (a <= c) == true && (a > c) == false && (a >= c) == false && (a <=> c) == std::weak_ordering::less && (a <=> c) != std::weak_ordering::equivalent && (a <=> c) != std::weak_ordering::greater && (a <=> c) < 0 && (a <=> c) != 0 && (a <=> c) <= 0 && ""); }
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3431 | C++20 |
operator
<=>
が
T
に
three_way_comparable
のモデル要件を要求していなかった
|
要求する |