C ++ 11 emplace_back()
에서는 일반적으로 push_back()
내부 생성을 허용하므로 효율성 측면에서 선호 되지만 push_back(std::move())
이미 생성 된 객체와 함께 사용하는 경우에도 마찬가지 입니까?
예를 들어, emplace_back()
다음과 같은 경우에 여전히 선호됩니까?
std::string mystring("hello world");
std::vector<std::string> myvector;
myvector.emplace_back(mystring);
myvector.push_back(std::move(mystring));
// (of course assuming we don't care about using the value of mystring after)
또한 위의 예에서 대신 다음을 수행하는 이점이 있습니까?
myvector.emplace_back(std::move(mystring));
아니면 여기의 이동이 완전히 중복됩니까, 아니면 효과가 없습니까?
myvector.emplace_back(mystring);
복사하고 움직이지 않습니다. 나머지 두 동작은 동일해야합니다.