编程论坛
注册
登录
编程论坛
→
C++教室
关于优先队列的问题
宅宅
发布于 2014-02-13 11:23, 463 次点击
优先队列里存结构 struct{int x,y,z;}
我想根据Z的大小决定优先度,怎么实现?
还有,如果队列里存的数组下标,能根据数组下标对应值的大小决定优先度吗?
4 回复
#2
yuccn
2014-02-13 12:00
据Z的大小决定优先度?? 什么优先度。队列没有优先度这个说法吧,你是否想说排序?
如果是,在插入时候做下处理,放到指定的位置不就行了?
第二个问题 不知道你问什么
#3
rjsp
2014-02-13 16:05
是指 std::priority_queue 吗?若是,看其模板第三个参数。
#4
宅宅
2014-02-14 11:48
回复 3楼 rjsp
就是不知道这个参数怎么用。。。
#5
rjsp
2014-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