簡體   English   中英

為什么沒有 `map::insert_or_assign` 的惰性版本?

[英]Why isn't there a lazy version of `map::insert_or_assign`?

map::insert_or_assign似乎是為實現緩存而設計的。 但如果值構造函數相對昂貴並且緩存未命中率大約為零,則它基本上沒有用。

有沒有辦法以一種惰性的方式使用這個 function 來避免構造一個不會被使用的值?

有沒有辦法以一種惰性的方式使用這個 function 來避免構造一個不會被使用的值?

始終使用傳遞給insert_or_assign的值:

  • 如果容器中已存在等效於k的鍵,則將std::forward<M>(obj)分配給對應於鍵kmapped_type
  • 如果鍵不存在,則插入新值,就像通過插入一樣,從value_type(k, std::forward<M>(obj))構造它

您正在尋找的方法是try_emplace ,只有當密鑰不存在時,它才會從其 arguments 中懶惰地構造一個條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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