Gor*_*dem 2 c++ performance containers stdmap c++-standard-library
VeryHeavy(args...)这段代码中的复制了多少次?
map.emplace(std::pair<VeryHeavyKey, VeryHeavy>(key, VeryHeavy(args...)));
Run Code Online (Sandbox Code Playgroud)
或者,也许,有更好的使用std::make_pair?复制对象是否有任何标准化的保证?在不复制的情况下将重物插入 std::map 的正确方法是什么?
在不复制的情况下将重物插入 std::map 的正确方法是什么?
在 C++17 之前
map.emplace(std::piecewise_construct,
std::forward_as_tuple(std::move(key)),
std::forward_as_tuple(args...));
Run Code Online (Sandbox Code Playgroud)
C++17 后
map.try_emplace(std::move(key), args...);
Run Code Online (Sandbox Code Playgroud)
C++17 变体通过不构造已经存在的VeryHeavyifkey来改进前者。