不是优先级队列的已排序容器
sorted container that is not a priority queue
我们需要一个容器,在附加新元素时,该容器按元素的优先级对其元素进行排序,该容器能够在给定元素ID的情况下检索元素。
(优先级队列的问题在于它不能让你根据id而不是优先级检索元素)
谢谢
boost 多索引容器使您能够对优先级进行排序视图,对 ID 进行排序视图。
一个小例子:
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/member.hpp>
#include <iostream>
#include <vector>
#include <cstddef>
#include <iterator>
struct elem {
std::size_t id;
int priority;
};
int main()
{
using namespace boost::multi_index;
typedef multi_index_container<
elem,
indexed_by<
ordered_unique<member<elem,std::size_t,&elem::id> >,
ordered_non_unique<member<elem,int,&elem::priority> >
>
> elem_container;
// just for show
std::vector<elem> elems =
{{0, 25},
{1, 10},
{2, 100},
{3, 6}
};
elem_container elemc(begin(elems), end(elems));
// by id
std::cout << "By ID: " << std::endl;
for(auto& x : elemc.get<0>()) {
std::cout << "id: " << x.id << "priority: " << x.priority << std::endl;
}
// by priority
std::cout << "By Priority: " << std::endl;
for(auto& x : elemc.get<1>()) {
std::cout << "id: " << x.id << "priority: " << x.priority << std::endl;
}
return 0;
}
相关文章:
- 二叉排序树无法编译
- 使用2个键的cpp-stl::优先级队列排序不正确
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 更改运行时优先级队列的排序功能
- 优先级队列未正确排序
- 排序函数和优先级队列 C++ 中的比较器
- C++ 中优先级队列的结构排序条件
- 相同的比较功能为C++中的排序和优先级队列提供不同的输出
- 根据优先级对向量列表进行字典式排序
- 使用冒泡排序c++对结构数组的成员进行优先级排序
- 为什么函数比较器不像在排序中那样在优先级队列中工作?
- 不是优先级队列的已排序容器
- 为什么我的基本优先级队列排序算法会导致 seg 错误
- C++优先级队列不排序
- 如何保持按第二个元素排序的对的优先级队列?
- c++中用于字符串优先级队列的未排序双链表
- 根据索引和优先级排序列表的数量
- C++优先级队列-根据更新的优先级重新排序
- 优先级队列排序指针指向改变值的对象.c++
- 使用优先级队列C++进行堆排序