___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll.
___ qstnhdr ___ Warum wurde unary_function, binary_function aus C ++ 11 entfernt?
___ antwort22387805 ___
Es wird nicht entfernt, es ist nur in C ++ 11 veraltet. Es ist immer noch Teil des C ++ 11-Standards. Sie können es immer noch in Ihrem eigenen Code verwenden. (Edit: Das Komitee stimmte kürzlich dafür, es aus C ++ 17 zu entfernen.)
Es wird nicht mehr im Standard verwendet, da Implementierungen, die von binary_function
abgeleitet werden müssen, überspezifiziert sind.
Benutzern sollte es egal sein, ob less
von binary_function
abgeleitet ist, sie müssen nur darauf achten, dass sie first_argument_type
, second_argument_type
und result_type
definiert. Es sollte von der Implementierung abhängen, wie es diese Typedefs bereitstellt.
Das Erzwingen, dass die Implementierung von einem bestimmten Typ abgeleitet wird, bedeutet, dass sich Benutzer möglicherweise auf diese Ableitung verlassen, was sinnlos und nicht sinnvoll ist.
Bearbeiten
Wie können wir das in C ++ 11 ohne unary_function verbessern?
Sie brauchen es nicht.
%Vor%
Tatsächlich können Sie es noch besser machen, siehe not_fn
: ein verallgemeinerter Negator
Mit variadischen Vorlagen lassen sich viele allgemeine Funktionszusammenstellungen viel einfacher und konsistenter ausdrücken, so dass der alte Kram nicht mehr notwendig ist:
Verwenden Sie:
- %code%
- %code%
- %code%
- %code%
- lambdas
Nicht verwenden:
-
%code% , %code%
- %code%
-
%code% , %code%
___ tag123c11 ___ C ++ 11 ist eine 2011 verabschiedete Version des C ++ - Sprachstandards. Sie hat viele Änderungen und Ergänzungen in der Kernsprache sowie der verbesserten und erweiterten C ++ - Standardbibliothek vorgenommen.
___ tag123stl ___ Die Standardvorlagenbibliothek (STL) ist eine C ++ - Bibliothek mit generischen Containern, Iteratoren, Algorithmen und Funktionsobjekten.
Als C ++ standardisiert wurde, wurden große Teile der STL in die Standardbibliothek übernommen, und diese Teile in der Standardbibliothek werden manchmal auch zusammen als "die STL" bezeichnet.
___ tag123functor ___ Der Begriff 'Funktor' hat zwei allgemeine Bedeutungen:
1. Funktionsobjekt. In objektorientierten Sprachen ist es eine Funktion, die es ermöglicht, Objekte wie normale Funktionen zu verwenden.
2. Eine mathematische Struktur, die sich mit Abbildungen zwischen Kategorien beschäftigt. Dieses Konzept ist eine nützliche Abstraktion in einigen Programmiersprachen, insbesondere in Haskell, wo es als Typklasse implementiert ist.
___ tag123unaryfunction ___ hilf uns dieses Wiki zu bearbeiten
___ qstntxt ___
Ich habe festgestellt, dass %code% aus C ++ 11 entfernt wurde. Ich frage mich warum.
C ++ 98:
%Vor%
C ++ 11:
%Vor%
MODIFIZIERT --------------------------------------- -------------------------------------
%Vor%
Wenn wir beispielsweise unseren Adapter für die Funktion selbst in C ++ 98 schreiben möchten,
%Vor%
Wie können wir das in C ++ 11 ohne %code% verbessern?