我有课:
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/