map::insert_or_assign看起来它是为实现缓存而设计的。但如果值构造函数相对昂贵且缓存未命中率接近于零,则它本质上是无用的。
有没有办法以惰性方式使用此函数以避免构造不会使用的值?
有没有办法以惰性方式使用此函数以避免构造不会使用的值?
始终insert_or_assign使用传递给的值:
k如果容器中已经存在相当于 的键,则分配std::forward<M>(obj)给与mapped_type该键对应的k。
- 如果键不存在,则像通过插入一样插入新值,从
value_type(k, std::forward<M>(obj))
您正在寻找的方法是try_emplace,仅当键尚不存在时,它才会从其参数延迟构造一个条目。
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |