C++ boost - 是否有一个容器像队列一样工作,可以直接访问 key ?

标签 c++ boost stl containers

我想知道一个类似队列的容器,但它具有 key 访问权限,就像 map 一样。 我的目标很简单:我想要一个 FIFO 队列,但是,如果我插入一个元素并且具有给定键的元素已经在队列中,我希望它的新元素 replaced 已经存在的元素队列。例如,按插入时间排序的 map 就可以了。

如果没有这样的容器,你认为可以同时使用 queue 和 map 来实现吗?

最佳答案

Boost multi-index提供了这种容器。

要自己实现它,我可能会选择一个 map,其值由一个链表节点和一个有效负载组成。列表节点可以手动滚动,也可以是 Boost intrusive .

请注意,queue 适配器的要点是隐藏了 Sequence 的大部分接口(interface),但你想弄乱它隐藏的细节。所以我认为您的目标应该是重现 queue 的界面(使用您为 push 更改的语义稍作修改)而不是实际使用它。

关于C++ boost - 是否有一个容器像队列一样工作,可以直接访问 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372154/

相关文章:

c++ - 为什么我的 C++ 类定义失败?

python - Boost Python 出现 "No such file or directory"错误

c++ - 在 STL 容器上使用 Emplace_back 而不是 push_back?

c++ - 什么是相对顺序以及 stable_partition 的作用是什么?

matlab 慢速 GPU 中的 C++AMP ARRAY_VIEW

C++ 错误 "redefinition of ' 字符串“作为不同种类的符号”

c++ - CMake 只接受 add_subdirectory 中的 `find_package(Qt5Widgets REQUIRED)`,而不是根项目

c++ - 如何使用 boost ASIO 在同一个 socket 上创建多个聊天室? (C++)

c++ - 日期时间到 UTC

c++ - 用于在嵌套容器中删除的删除删除惯用语? (删除外部的;C++ STL)