首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强flat_map批量插入

增强flat_map批量插入
EN

Stack Overflow用户
提问于 2021-06-15 12:25:48
回答 1查看 89关注 0票数 2

我有一个维护boost::flat_map的C++程序。它以(key,value)的形式接收实时命令。如果值为0,则应删除flat_mapkey (如果存在)。如果value为非零值,则如果条目已经存在,则应在flat_map中将flat_mapkey设置为value,或者,如果条目不存在,则应插入该条目。

但是,这些命令并不是一个接一个地出现。相反,它们是成批出现的,程序只需要在处理完每一整批命令后对flat_map进行排序。它不需要在处理一批命令的过程中对flat_map进行排序。

考虑到这种灵活性,有没有一种方法可以通过避免每次插入/删除时移动许多元素的flat_map开销,并且只在每个批处理结束时产生一次开销来减少处理时间?该程序对延迟非常敏感。

感谢你可能得到的任何意见!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 16:32:27

您可以使用extract_sequence / adopt_sequence来更新底层向量,只要它最终是有序的和唯一的,就只有一对向量移动会产生开销。

代码语言:javascript
复制
auto underlying = my_map.extract_sequence();

// merge underlying and batch

my_map.adopt_sequence(boost::ordered_unique_range_t{}, std::move(underlying));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67980026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档