注册 登录
编程论坛 C++教室

关于优先队列的问题

宅宅 发布于 2014-02-13 11:23, 463 次点击
优先队列里存结构 struct{int x,y,z;}
我想根据Z的大小决定优先度,怎么实现?

还有,如果队列里存的数组下标,能根据数组下标对应值的大小决定优先度吗?
4 回复
#2
yuccn2014-02-13 12:00
据Z的大小决定优先度?? 什么优先度。队列没有优先度这个说法吧,你是否想说排序?
如果是,在插入时候做下处理,放到指定的位置不就行了?

第二个问题 不知道你问什么
#3
rjsp2014-02-13 16:05
是指 std::priority_queue 吗?若是,看其模板第三个参数。
#4
宅宅2014-02-14 11:48
回复 3楼 rjsp
就是不知道这个参数怎么用。。。
#5
rjsp2014-02-14 12:13
回复 4楼 宅宅
程序代码:
#include <queue>
#include <iostream>
using namespace std;

struct foo
{
    int x, y, z;

    foo( int x, int y, int z ) : x(x), y(y), z(z)
    {
    }
};

struct foo_comp_z
{
    bool operator()( const foo& lhs, const foo& rhs ) const
    {
        return lhs.z < rhs.z;
    }
};

int main( void )
{
    std::priority_queue<foo,std::vector<foo>,foo_comp_z> q;
    q.push( foo(0,0,2) );
    q.push( foo(0,0,1) );
    q.push( foo(0,0,3) );

    for( ; !q.empty(); q.pop() )
        cout << q.top().z << endl;

    return 0;
}

1