Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Operator 'Operatorname': veraltet für Arraytypen
Hinweise
Gleichheit und relationale Vergleiche zwischen zwei Operanden des Arraytyps sind in C++20 veraltet. Weitere Informationen finden Sie unter C++-Standardvorschlag P1120R0.
In Visual Studio 2019, Version 16.2 und höher, erzeugt ein Vergleichsvorgang zwischen zwei Arrays (trotz Rang- und Umfangsähnlichkeiten) jetzt eine Warnung der Ebene 1 C5056, wenn die /std:c++latest Compileroption aktiviert ist. In Visual Studio 2019, Version 16.11 und höher, erzeugt sie auch eine Warnung unter /std:c++20.
Beispiel
In Visual Studio 2019, Version 16.2 und höher, erzeugt der folgende Code die Warnung C5056, wenn die /std:c++latest Compileroption aktiviert ist. In Visual Studio 2019, Version 16.11 und höher, wird auch eine Warnung unter /std:c++20:
// C5056.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5056.cpp
int main() {
int a[] = { 1, 2, 3 };
int b[] = { 1, 2, 3 };
if (a == b) { return 1; } // warning C5056: operator '==': deprecated for array types
}
Sie können die Adressen der ersten Elemente vergleichen, um zu vermeiden, dass eine Warnung ausgelöst wird:
// C5056_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++latest C5056_fixed.cpp
int main() {
int a[] = { 1, 2, 3 };
int b[] = { 1, 2, 3 };
if (&a[0] == &b[0]) { return 1; }
}
Um zu ermitteln, ob der Inhalt von zwei Arrays gleich ist, verwenden Sie die Funktion std::equal:
std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b));