Diese Algorithmen stellen eine benannte Version statt einer überladenen Version zur Verfügung, da beide Versionen des Algorithmus die gleiche Anzahl von Argumenten haben. Überladen von Unklarheiten wäre daher möglich.
Um mögliche Mehrdeutigkeiten zu vermeiden, bietet die Bibliothek separate benannte Versionen für diese Algorithmen, find_if
ist eine davon.
Es ist nicht klar, wie die Überladungsauflösung generisch funktionieren würde. Was ist, wenn der Container beispielsweise Prädikate enthält?
%Vor%Diese mögliche Ambiguität wird vermieden, indem Funktionen mit unterschiedlichen Namen verwendet werden, wobei jeder Name die Absicht deutlicher ausdrückt.
Beachten Sie, dass dies eine Vereinfachung ist: Es gibt keine Anforderung in std::find
, dass das Referenzobjekt vom selben Typ wie der value_type
des Containers ist, nur dass sie für die Gleichheit vergleichbar sind. Die Anforderungen für das Prädikat in std::find_if
sind ähnlich generisch. Beide Funktionen sind sehr generisch, was dazu führen kann, dass eine Mehrdeutigkeit leichter als im Beispiel gegeben ist. Zum Beispiel
Tags und Links c++ c++11 stl stl-algorithm