Namespaces
Variants

C++ named requirements: Predicate

From cppreference.net
C++ named requirements

Die Predicate Anforderungen beschreiben ein Aufrufbares, das einen BooleanTestable Wert zurückgibt.

Prädikat wird typischerweise mit Algorithmen verwendet, die Eingabedaten (einzelne Objekte/Container) und ein Prädikat entgegennehmen, welches dann auf die Eingabedaten angewendet wird, um über den weiteren Ablauf zu entscheiden. Einige Beispiele für die Verwendung von Prädikaten in der C++-Standardbibliothek sind:

  • std::all_of , std::any_of , std::none_of Nehmen ein Array von Elementen und ein Prädikat als Eingabe. Rufen das Prädikat für einzelne Eingabeelemente auf und geben true zurück, wenn für alle/jedes/keines der Elemente das Prädikat true zurückgibt.
  • std::find_if Nimmt eine Folge von Elementen und ein Prädikat entgegen. Gibt das erste Element in der Folge zurück, für das das Prädikat einen Wert gleich true liefert.

Die oben gegebene Beschreibung der Algorithmus-Einrichtungen ist grob und soll Predicate in einfachen Begriffen erklären. Für detaillierte Informationen konsultieren Sie bitte die einzelnen Seiten.

Mit anderen Worten, wenn ein Algorithmus ein Predicate pred und einen Iterator first verwendet, sollte er in der Lage sein, das Objekt des Typs, auf den der Iterator first zeigt, mit dem gegebenen Prädikat zu testen, und zwar über ein Konstrukt wie if ( pred ( * first ) ) { /*...*/ } .

Das Funktionsobjekt pred darf keine nicht-konstante Funktion über den dereferenzierten Iterator anwenden und muss ein const -Argument akzeptieren, mit demselben Verhalten unabhängig davon, ob das Argument const oder nicht- const ist. Dieses Funktionsobjekt kann ein Zeiger auf eine Funktion oder ein Objekt eines Typs mit einem geeigneten Funktionsaufrufoperator sein.

Anforderungen

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 3031 C++98 Anforderungen an const Werte waren unzureichend Anforderungen verstärkt

Siehe auch

(C++20)
spezifiziert, dass ein aufrufbarer Typ ein boolesches Prädikat ist
(Konzept)