Espacios de nombres
Variantes
Acciones

Conceptos C++: ValueSwappable

De cppreference.com
< cpp‎ | concept
 
 
C + + conceptos
Básica
Original:
Basic
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Biblioteca-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.
(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.
Elementos contenedores
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.
Números aleatorios
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.
Concurrencia
Original:
Concurrency
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
(C++11)
(C++11)
Otros
Original:
Other
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
Dos objetos de este tipo puede dejar de hacer referencia y los valores resultantes se pueden intercambiar utilizando swap() incondicional llamada de función en el contexto en el que tanto std::swap y los swap()s definidas por el usuario son accesibles .
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.

[editar] Requisitos

Tipo T es ValueSwappable si
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)
T tipo cumple los requisitos Iterator
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)
Para cualquier objeto x dereferencable de T tipo (es decir, cualquier valor que no sea el iterador final), *x satisface los 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.
Muchas de las funciones de la biblioteca estándar esperan que sus argumentos para satisfacer ValueSwappable, lo que significa que cada vez que la biblioteca estándar realiza un intercambio, que utiliza el 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.

[editar] Ejemplo

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