【发布时间】:2020-07-06 07:45:51
【问题描述】:
此代码中的VeryHeavy(args...) 精确复制了多少次?
map.emplace(std::pair<VeryHeavyKey, VeryHeavy>(key, VeryHeavy(args...)));
或者,也许,使用std::make_pair 更好?
复制对象是否有任何标准化的保证?将重物插入 std::map 而不复制的正确方法是什么?
【问题讨论】:
-
shared_ptr怎么样? -
我不明白,我应该在哪里使用
shared_ptr? -
map.emplace(std::move(key), VeryHeavy(args...));似乎是一种改进。我希望该代码的副本为零。 -
是什么让
std::move(...)? -
我假设您已经有很多
VeryHeavy并且需要将它们放在地图中。我的建议是用 shared_ptr 替换VeryHeave。取决于您“不想”复制的内容。我可能会以错误的方式解释您的问题。
标签: c++ performance containers stdmap c++-standard-library