簡體   English   中英

將重物插入 std::map

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM