c++ - C++中相同指针的两个优先级队列

标签 c++ stl stl-algorithm

我有课:

class A{
    //fields, methods
;

我需要一个有效的数据结构,允许您从指向 A 类最小值和最大值的对象的各种指针中进行选择(它应该在线工作,即问题的选择将与添加新指针的请求交替)。这可以通过使用两个优先级队列来完成:

priority_queue<A*, vector<A*>, ComparatorForFindingLightestObjects>* qL;
priority_queue<A*, vector<A*>,  ComparatorForFindingHardestObjects>* qH;

问题是,如果从第一个队列中提取对象指针,那么一段时间后该对象就会被销毁,但由于指向该对象的指针仍然存在于另一个队列中,因此会发生从释放的内存中读取数据的错误.

如何通过标准STL容器来解决这个问题,而不需要编写自己的数据结构?

最佳答案

我相信您正在寻找 boost::multi_index 这是一个可访问的单个容器,但有多个不同的“ View ”:http://www.boost.org/doc/libs/1_59_0/libs/multi_index/doc/index.html

关于c++ - C++中相同指针的两个优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208309/

相关文章:

c++ - 通过隐式转换小于运算符?

c++ - boost lambda 问题

c++ - 返回类的私有(private)静态成员

c++ - 从 istream_iterator 理解平等

c++ - 智能感知 : a value of type "IDeviceServer *" cannot be assigned to an entity of type "IDeviceServer *"

C++11 等于和小于

c++ - 如何在 STL 堆栈中保存用户定义的类型?

c++ - std::fill、std::copy 是否专门用于 std::vector<bool>?

c++ - 检查数字中单个数字的出现次数是否相同

c++ - 二叉搜索树。插入方法插入不正确