在此代码中:
// build string requiring a bunch of processing
std::wstring xmlstr=xml->GetXml();
{
std::lock_guard<std::mutex> guard(my_mutex);
m_deque.push_back(std::move(xmlstr)); // << note the std::move
}
在这种情况下使用它std::move
来减少复印件是否更有效?
在此代码中:
// build string requiring a bunch of processing
std::wstring xmlstr=xml->GetXml();
{
std::lock_guard<std::mutex> guard(my_mutex);
m_deque.push_back(std::move(xmlstr)); // << note the std::move
}
在这种情况下使用它std::move
来减少复印件是否更有效?
是的。
push_back
有一个采用右值引用的重载,可以避免复制。对于任何具有 的容器push_back
(包括 ),这都是正确的std::deque
。是的,移动语义比复制相对要快。如果你不确定,可以随时对其进行基准测试。例如https://quick-bench.com/q/aJTHVE5uIXgY2cvG4LJYr28tXKY
编号为
std::string
。结果将会像