Namensräume
Varianten
Aktionen

std::isunordered

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
bool isunordered( float x, float y );

bool isunordered( double x, double y );

bool isunordered( long double x, long double y );
(seit C++11)
(bis C++23)
constexpr bool isunordered( /* floating-point-type */ x,
                            /* floating-point-type */ y );
(seit C++23)
Definiert in der Header-Datei <cmath>
template< class Arithmetic1, class Arithmetic2 >
bool isunordered( Arithmetic1 x, Arithmetic2 y );
(A) (seit C++11)
(constexpr seit C++23)
1) Ermittelt, ob die Gleitkommazahlen x und y ungeordnet sind, d. h. eine oder beide sind NaN und können daher nicht sinnvoll miteinander verglichen werden.Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Gleitkommatypen als Parametertypen x und y bereit.(seit C++23)
A) Zusätzliche Überladungen werden für alle anderen Kombinationen von arithmetischen Typen bereitgestellt.

Inhalt

[bearbeiten] Parameter

x, y - Gleitkomma- oder Ganzzahlwerte

[bearbeiten] Rückgabewert

true, wenn entweder x oder y NaN ist, false andernfalls.

[bearbeiten] Anmerkungen

Die zusätzlichen Überladungen müssen nicht exakt wie (A) angegeben werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr erstes Argument num1 und ihr zweites Argument num2

  • Wenn num1 oder num2 vom Typ long double ist, hat std::isunordered(num1, num2) denselben Effekt wie std::isunordered(static_cast<long double>(num1),
                     static_cast<long double>(num2))
    .
  • Andernfalls, wenn num1 und/oder num2 vom Typ double oder einem ganzzahligen Typ sind, hat std::isunordered(num1, num2) denselben Effekt wie std::isunordered(static_cast<double>(num1),
                     static_cast<double>(num2))
    .
  • Andernfalls, wenn num1 oder num2 vom Typ float ist, hat std::isunordered(num1, num2) denselben Effekt wie std::isunordered(static_cast<float>(num1),
                     static_cast<float>(num2))
    .
(bis C++23)

Wenn num1 und num2 arithmetische Typen haben, hat std::isunordered(num1, num2) denselben Effekt wie std::isunordered(static_cast</*gemeinsamer-gleitkomma-typ*/>(num1),
                 static_cast</*gemeinsamer-gleitkomma-typ*/>(num2))
, wobei /*gemeinsamer-gleitkomma-typ*/ der Gleitkommatyp mit dem höchsten Gleitkomma-Konversionsrang und dem höchsten Gleitkomma-Konversions-Subrang zwischen den Typen von num1 und num2 ist. Argumente vom ganzzahligen Typ werden so behandelt, als hätten sie denselben Gleitkomma-Konversionsrang wie double.

Wenn kein solcher Gleitkommazahltyp mit dem höchsten Rang und Subrang existiert, dann führt die Überladungsauflösung nicht zu einem nutzbaren Kandidaten aus den bereitgestellten Überladungen.

(seit C++23)

[bearbeiten] Beispiel

#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);
}

Ausgabe

isunordered(10, 01): false
isunordered(INFINITY, NAN): true
isunordered(INFINITY, INFINITY): false
isunordered(NAN, NAN): true

[bearbeiten] Siehe auch

klassifiziert den gegebenen Gleitkommawert
(Funktion) [bearbeiten]
(C++11)
prüft, ob die gegebene Zahl NaN ist
(Funktion) [bearbeiten]
C-Dokumentation für isunordered