您的位置:首页 > 编程语言 > C语言/C++

C++使用priority_queue方法

2016-01-23 16:21 267 查看
优先队列是一种容器适配器,根据一种严格的排序标准,它的第一个元素一般是在它所包含的元素中最大的。

这种情况类似于一个堆,元素可以随时插入,只能堆中最大的元素才能被检索到(那个在优先队列顶部的元素)。

优先队列是作为容器适配器,实现使用一个特定的容器类的封装对象作为它的底层容器,提供一组特定的成员函数来访问它的元素。元素出现的“返回”特定的容器,这被称为优先队列的顶部。

Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.

STL里面容器默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数 缺省的话,优先队列就是大顶堆,队头元素最大。

void test(){
struct BBC
{
int a, b, c;
BBC(int x, int y, int z) :a(x), b(y), c(z){}
bool operator<(const BBC &nyt)const{
return b < nyt.b;
}
};
int p[7] = { 2, 7, 13, 19,1,14,9};
int n = 7,N=6;
priority_queue<BBC> q;
for (int j = 0; j < n; ++j){
q.push(BBC(0, p[j], p[j]));
}
for (int i = 0; i < N; ++i){
cout << q.top().b << " ";
q.pop();
}
cout << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: