[英]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)
分配給對應於鍵k
的mapped_type
。
- 如果鍵不存在,則插入新值,就像通過插入一樣,從
value_type(k, std::forward<M>(obj))
構造它
您正在尋找的方法是try_emplace
,只有當密鑰不存在時,它才會從其 arguments 中懶惰地構造一個條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.