[英]Inserting heavy objects into std::map
這段代碼中的VeryHeavy(args...)
精確復制了多少次?
map.emplace(std::pair<VeryHeavyKey, VeryHeavy>(key, VeryHeavy(args...)));
或者,也許,最好使用std::make_pair
? 復制對象是否有任何標准化的保證? 在不復制的情況下將重物插入 std::map 的正確方法是什么?
將重型 object 插入 std::map 而不復制的正確方法是什么?
C++17 之前
map.emplace(std::piecewise_construct,
std::forward_as_tuple(std::move(key)),
std::forward_as_tuple(args...));
后 C++17
map.try_emplace(std::move(key), args...);
C++17 變體改進了前者,如果key
已經存在,則不構造VeryHeavy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.