限制std :: set的大小
我有一个关于std :: set容器的简短问题。现在我正在使用pushback功能来提供我的设置。对于每个push_back,该集合变得越来越大。
我只对最新的30个元素感兴趣......可以删除旧元素。所以我的想法是将集合的大小限制为30个元素左右,并通过这样做摆脱不需要的旧元素。但是,默认情况下,该集不支持限制。我可以偶尔检查一下这个集的大小,然后手动删除多余的元素。
有更聪明的方法吗?
关心Lumpi
没有找到相关结果
已邀请:
4 个回复
锹缄
每当您在地图中查找条目时,将其关联的列表条目移动到列表的开头。向地图添加条目时,创建一个新的lru_entry,将其添加到map和list中,并更新lru_entry结构中的迭代器。当查找映射超过30个条目时,您可以使用lru列表快速查找最旧的条目。 您可以在此前的stackoverflow问题中找到有关如何构建LRU列表的更多建议。
催备南菠亨
数据结构封装到一个类中,并在该类中控制元素计数。
长拳
脖呐
代替
,用
代替
)
结果: