이동 생성자/이동 할당 내에서 값을 명시 적으로 이동해야하는지 여부를 알고 싶습니다. 나는 다음과 같은 상황이 있다고 가정하자 : 모든더 이상 사용하지 않는 값을 이동해야합니까?
struct Node
{
std::vector<int> items;
};
Node create()
{
std::vector<int> items;
items.push_back(2);
Node n;
// should I use n.items = std::move(items);
// instead?
n.items = items;
// other code, not using items any more
return n;
}
우선, 내가 다음 코드에서 더 이상 이동 된 값을 사용하지 않는 것이 제공 std::move
를 사용하여 좌변을 이동 맞습니까?
둘째, 명시 적으로 값을 이동하는 것이 더 빠르습니까? 아니면 컴파일러가 자동으로 그 값을 이동시킬 수 있는지 감지합니까?
이동이 복사본보다 낫다 – vu1p3n0x
'n'을 먼저 인스턴스화하고'n.items'를 직접 누르는 것이 왜 문제가되지 않습니까? – user4581301
@ user4581301이 맞습니다. 당신은 비범 한 예를 생각해 낼 수 있습니까? –