C++ stack queue priority_element
public:
intx,y,z;
T(inta,intb,intc):x(a),y(b),z(c)
{
}
};
booloperator>(constT&t1,constT&t2)
{
returnt1.z>t2.z;
}
main()
{
priority_queue<T,vector<T>,greater<T>>q;
q.push(T(4,4,3));
q.push(T(2,2,5));
q.push(T(1,5,4));
q.push(T(3,3,6));
while(!q.empty())
{
Tt=q.top();q.pop();
cout<<t.x<<""<<t.y<<""<<t.z<<endl;
}
return1;
}
输出结果为:
443
154
225
336
如果我们把第一个例子中的比较运算符重载为:
booloperator<(constT&t1,constT&t2)
{
returnt1.z>t2.z;//按照z的顺序来决定t1和t2的顺序
}
则第一个例子的程序会得到和第二个例子的程序相同的输出结果。
1.6nth_element指定元素排序
nth_element一个容易看懂但解释比较麻烦的排序。用例子说会更方便: