c ++ – Exchange two complex structuring: the fastest way to achieve

I need to copy / exchange values ​​from one structure to another and I think the exchange will be faster than copying, am I right?

#include 
#include 
#include 

class B
{
public:
int and
std :: vector z;
B () {std :: cout << "Called" << std :: endl;}
private:
int z1;
};

int main ()
{
B b1, b2;
b1.z.push_back (1);
std :: swap (b1, b2);
std :: cout << b2.z[0] << std :: endl;
b1.z.push_back (1);
b2 = std :: move (b1);
std :: cout << b2.z[0] << std :: endl;
b1.z.push_back (1);
std :: exchange (b1, b2);
std :: cout << b2.z[0] << std :: endl;
b1.z.push_back (1);
b2 = std :: forward(b1);
std :: cout << b2.z[0] << std :: endl;
}

The previous code performs the exchanges as expected, but I'm not sure which is the fastest way; my objective is to copy the values ​​(exchange if it is faster) from one structure variable to another: in real time, the structure will have complex classes defined by the user. .

I understand that, similarly, there will be ways to copy, but in what way is it better / safe / faster to copy at the destination?

Do I need to take care of an operator / builder to help him?