C + + Konzepte: ValueSwappable
Aus cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Zwei Objekte dieses Typs können dereferenziert und die daraus resultierenden Werte können vertauscht mit unqualifizierten Funktionsaufruf swap() im Kontext, wo sowohl std::swap und die benutzerdefinierten swap()s sichtbar sind .
Original:
Two objects of this type can be dereferenced and the resulting values can be swapped using unqualified function call swap() in the context where both std::swap and the user-defined swap()s are visible.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Anforderungen
Typ T ist
ValueSwappable
wennOriginal:
Type T is
ValueSwappable
ifThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
1)
Typ
T
erfüllt die Iterator
AnforderungenOriginal:
Type
T
satisfies the Iterator
requirementsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2)
Für jede dereferencable Objekt
x
vom Typ T
(das heißt, ein anderer Wert als Ende iterator) erfüllt *x
die Swappable
Anforderungen .Original:
For any dereferencable object
x
of type T
(that is, any value other than the end iterator), *x
satisfies the Swappable
requirements.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Viele Standard-Bibliothek Funktionen erwarten ihre Argumente
ValueSwappable
, was bedeutet, dass zu jeder Zeit die Standard-Bibliothek führt eine Swap es das Äquivalent von using std::swap; swap(*iter1, *iter2): verwendet bedeutet, zu befriedigen .Original:
Many standard library functions expect their arguments to satisfy
ValueSwappable
, which means that any time the standard library performs a swap, it uses the equivalent of using std::swap; swap(*iter1, *iter2):.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Beispiel
#include <iostream> #include <vector> class IntVector { std::vector<int> v; IntVector& operator=(IntVector); // not assignable public: void swap(IntVector& other) { v.swap(other.v); } }; void swap(IntVector& v1, IntVector& v2) { v1.swap(v2); } int main() { IntVector v1, v2; // IntVector is Swappable, but not MoveAssignable IntVector* p1 = &v1; IntVector* p2 = &v2; // IntVector* is ValueSwappable std::iter_swap(p1, p2); // OK: iter_swap requires ValueSwappable // std::swap(v1, v2); // compiler error! std::swap requires MoveAssignable }