std::isunordered
From cppreference.com
| ヘッダー <cmath> で定義 |
||
| (1) | ||
bool isunordered( float x, float y ); bool isunordered( double x, double y ); |
(C++11以降) (C++23まで) |
|
| constexpr bool isunordered( /* floating-point-type */ x, /* floating-point-type */ y ); |
(C++23から) | |
| ヘッダー <cmath> で定義 |
||
| template< class Arithmetic1, class Arithmetic2 > bool isunordered( Arithmetic1 x, Arithmetic2 y ); |
(A) | (C++11以降) (C++23 以降 constexpr) |
1) 浮動小数点数 `x` と `y` が順序なし(unordered)かどうかを判定します。これは、一方または両方が NaN であり、意味のある比較ができない場合を指します。ライブラリは、`x` と `y` のパラメータの型として、すべての cv 修飾されていない浮動小数点型に対するオーバーロードを提供します。(C++23 以降)
A) その他の算術型の組み合わせすべてに対して、追加のオーバーロードが提供されます。
目次 |
[編集] パラメータ
| x, y | - | 浮動小数点または整数値 |
[編集] 戻り値
`x` または `y` のいずれかが NaN の場合は `true`、それ以外の場合は `false`。
[編集] 注釈
追加のオーバーロードは (A) とまったく同じように提供される必要はない。それらは、最初の引数 num1 と2番目の引数 num2 に対して以下を保証するのに十分である必要がある。
|
(C++23まで) |
|
`num1` と `num2` が算術型の場合、`std::isunordered(num1, num2)` は `std::isunordered(static_cast< /*common-floating-point-type*/ >(num1),` そのような最高のランクとサブランクセを持つ浮動小数点型が存在しない場合、オーバーロード解決は提供されたオーバーロードから使用可能な候補を導出しません。 |
(C++23から) |
[編集] 例
このコードを実行
#include <cmath> #include <iostream> #define SHOW_UNORDERED(x, y) \ std::cout << std::boolalpha << "isunordered(" \ << #x << ", " << #y << "): " \ << std::isunordered(x, y) << '\n' int main() { SHOW_UNORDERED(10, 01); SHOW_UNORDERED(INFINITY, NAN); SHOW_UNORDERED(INFINITY, INFINITY); SHOW_UNORDERED(NAN, NAN); }
出力
isunordered(10, 01): false isunordered(INFINITY, NAN): true isunordered(INFINITY, INFINITY): false isunordered(NAN, NAN): true
[編集] 関連項目
| (C++11) |
与えられた浮動小数点数値を分類する (関数) |
| (C++11) |
与えられた数値が NaN かチェックする (関数) |
| C のドキュメント for isunordered
| |