STL或BOOST映射中是否有类似容器的查找和弹出操作?
我希望我的地图是可搜索的,并且我希望能够从其中剔除很久以前插入其中的元素(使用像 map.remove(map.get_iterator_to_oldest_inserted_element())
这样的 api ) queqe和map的混合。STL或Boost中有这样的容器吗?
I want my map to be searchable and I want to be capable to kick out from it elements that were inserted into it longest time ago (with api like map.remove(map.get_iterator_to_oldest_inserted_element())
) like mix of queqe and map.. Is there any such container in STL or Boost?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用 boost::multi_index 使用
ordered_unique
和sequence
索引,如本例所示。You can use boost::multi_index using the
ordered_unique
andsequence
indices, as in this example.您可以设置boost 多索引容器 来执行此操作。
但是,我很难理解多索引容器。我认为推出我自己的具有 std::queue 和 std::map 作为成员的类并自己管理会更容易。
You can set up a boost multi-index container to do this.
However, I have trouble understanding multi-index containers. I think it would be easier to roll my own class that has as members a
std::queue
and astd::map
, and manage it myself.boost 和 stl 中没有类似的东西,但你可以自己制作一个混合的:
There is nothing like that in boost and stl, but you can make a hybrid one yourself:
如果您只想找到最旧的(或最新的——或者更一般地说,根据某些指定条件找到最小/最大的元素,并能够删除该元素),那么
priority_queue
就可以完成这项工作。If you only ever want to find the oldest (or newest -- or more generally the least/greatest by some specified criteria, and be able to remove that element), then a
priority_queue
will do the job.Boost::bimap 可用于使用基于列表的关系集创建单向映射。
Boost::bimap can be used to create a unidirectionnal map using a list-based relation set.