Мне нужно поменять значение одной структуры с другой и считаю, что своп будет быстрее, чем копирование - я прав?
#include <iostream>
#include <algorithm>
#include <vector>
class B
{
public:
int y;
std::vector<int> 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<B>(b1);
std::cout << b2.z[0] << std::endl;
}
Приведенный выше код выполняет свопы, как и ожидалось, но я не уверенчто является самым быстрым способом.Моя цель - скопировать значения (поменять местами, если это быстрее) одной структурной переменной на другую.В реальном коде структура будет иметь сложные определяемые пользователем типы.
Я понимаю, что аналогичным образом будут способы копирования, но какой способ является лучшим / безопасным / быстрым для копирования в место назначения?
Нужно ли мне позаботиться о каком-нибудь операторе / конструкторе, чтобы помочь ему?