이동 된 컨테이너를 재사용하는 올바른 방법은 무엇입니까?
std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);
// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize
container.push_back(2);
assert(container.size() == 1 && container.front() == 2);
C ++ 0x 표준 초안에서 읽은 내용에서; ver3은 올바른 방법 인 것 같습니다. 이동 후 개체가
"달리 명시되지 않는 한, 이러한 이동 된 객체는 유효하지만 지정되지 않은 상태로 배치됩니다."
"다른 방법으로 지정"된 인스턴스를 찾지 못했습니다.
비록 ver3가 약간 원형이고 ver1을 선호하지만 vec3는 추가 최적화를 허용 할 수 있지만 다른 한편으로는 쉽게 실수로 이어질 수 있습니다.
내 가정이 맞습니까?
clear
전제 조건이 없으므로을 호출 할 수 있습니다 (따라서 객체의 상태에 의존하지 않음).