<div class="t-tr-text">C + +: conceitos<div class="t-tr-dropdown"><div><div><div class="t-tr-dropdown-arrow-border"></div><div class="t-tr-dropdown-arrow"></div><div class="t-tr-dropdown-h">Original:</div><div class="t-tr-dropdown-orig">C++ concepts:</div><div class="t-tr-dropdown-notes">The text has been machine-translated via [http://translate.google.com Google Translate].<br/> You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.</div></div></div></div></div> ValueSwappable
De cppreference.com
<metanoindex/>
Dois objetos deste tipo podem ser dereferenced e os valores resultantes podem ser trocados usando
swap() chamada não qualificada função no contexto em que tanto std::swap e os swap()s definidas pelo usuário são visíveis.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.
Requisitos
Tipo T é
ValueSwappable seOriginal:
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)
T satisfaz os requisitos IteratorOriginal:
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)
Para qualquer objeto
x dereferencable de T tipo (ou seja, qualquer valor diferente do iterador final), *x satisfaz os requisitos Swappable.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.
Muitas funções da biblioteca padrão esperam que os seus argumentos para satisfazer
ValueSwappable, o que significa que a qualquer momento a biblioteca padrão executa um swap, ele usa o equivalente a using std::swap; swap(*iter1, *iter2):.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.
Exemplo
#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
}
