Ich ging über einige C++ - Quellcode from a library in Bezug auf ein Haustier-Projekt, ich arbeite an und stieß auf etwas, das ich nicht verstehe. An einem Ort, wo ich eine Pointer-Dereference durch Zuweisung gefolgt erwartet, nutzen die Bibliothek Autoren std::swap()
nahe dem Ende der Funktion um das Ergebnis zu schreiben:mit std :: swap statt Zuweisung mit '=' Operator
std::swap(*out, result);
ich erwartet habe, so etwas zu sehen:
*out = result;
anzumerken, dass ein result
typedef
von size_t
und out
ist ein Zeiger auf die gleiche Art.
Wenn es um "Systemprogrammierung" geht, ist mein Hintergrund in C und C#, aber nicht viel in C++. Gibt es einen besonderen Grund für diese Art von "Zuweisung"?
Wenn der Wert 'result' nach dem Swap * nicht * verwendet wird, ist' std :: move' möglicherweise die bessere Wahl. Siehe auch [Was genau ist ein R-Wert in C++?] (Http://stackoverflow.com/q/9406121/608639). – jww
@jww, 'result' wird nach dem Aufruf von' std :: swap' nicht verwendet. – easuter