Namensräume
Varianten
Aktionen

C + + Konzepte: ValueSwappable

Aus cppreference.com
< cpp‎ | concept

 
 
C + + Konzepte
Basic
Original:
Basic
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Library-Wide
Original:
Library-Wide
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
EqualityComparable
LessThanComparable
Swappable(C++11)
ValueSwappable(C++11)
Container
Original:
Container
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Container-Elemente
Original:
Container Elements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Iterator
Original:
Iterator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Zufallszahlen
Original:
Random Numbers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Concurrency
Original:
Concurrency
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
BasicLockable(C++11)
Lockable(C++11)
TimedLockable(C++11)
Mutex(C++11)
TimedMutex(C++11)
Andere
Original:
Other
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
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.

[Bearbeiten] Anforderungen

Typ T ist ValueSwappable wenn
Original:
Type T is ValueSwappable if
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
1)
Typ T erfüllt die Iterator Anforderungen
Original:
Type T satisfies the Iterator requirements
The text has been machine-translated via Google Translate.
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.
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.

[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
}