Neste código:
// 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
}
É mais eficiente usar std::move
neste caso para reduzir a produção de cópias?
Sim, é.
push_back
tem uma sobrecarga tomando referência rvalue que evitará cópia. Isso é verdade para qualquer contêiner que tenhapush_back
, incluindostd::deque
.Sim, a semântica de movimento é relativamente mais rápida do que copiar. Você sempre pode fazer um benchmark se não tiver certeza. Por exemplo https://quick-bench.com/q/aJTHVE5uIXgY2cvG4LJYr28tXKY
Não. para
std::string
.o resultado será como