名前空間
変種
操作

std::isunordered

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)

(C++11)
(C++11)
べき乗関数
(C++11)
(C++11)
三角関数と
双曲線関数
(C++11)
(C++11)
(C++11)

誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最近接整数への浮動小数点数操作
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点数の操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類と比較
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
isunordered
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
分類
(C++11)(C++11)(C++11)(C++11)(C++11)


 
ヘッダー <cmath> で定義
(1)
bool isunordered( float x, float y );

bool isunordered( double x, double y );

bool isunordered( long double x, long 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 に対して以下を保証するのに十分である必要がある。

  • もし `num1` または `num2` の型が `long double` の場合、`std::isunordered(num1, num2)` は `std::isunordered(static_cast(num1),`
                     static_cast<long double>(num2)) と同じ効果を持ちます。
  • それ以外の場合で、`num1` および/または `num2` の型が `double` または整数型の場合、`std::isunordered(num1, num2)` は `std::isunordered(static_cast(num1),`
                     static_cast<double>(num2)) と同じ効果を持ちます。
  • それ以外の場合で、`num1` または `num2` の型が `float` の場合、`std::isunordered(num1, num2)` は `std::isunordered(static_cast(num1),`
                     static_cast<float>(num2)) と同じ効果を持ちます。
(C++23まで)

`num1` と `num2` が算術型の場合、`std::isunordered(num1, num2)` は `std::isunordered(static_cast< /*common-floating-point-type*/ >(num1),`
                 static_cast</*common-floating-point-type*/>(num2)) と同じ効果を持ちます。ここで、`/*common-floating-point-type*/` は、`num1` と `num2` の型の間で、最も高い浮動小数点変換ランクと最も高い浮動小数点変換サブランクを持つ浮動小数点型です。整数型の引数は、`double` と同じ浮動小数点変換ランクを持つとみなされます。

そのような最高のランクとサブランクセを持つ浮動小数点型が存在しない場合、オーバーロード解決は提供されたオーバーロードから使用可能な候補を導出しません。

(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)
与えられた数値が NaN かチェックする
(関数) [編集]
C のドキュメント for isunordered
English 日本語 中文(简体) 中文(繁體)