65,186
社区成员




#include <iostream>
#include <vector>
#include <queue>
using namespace std;
//看看priority_queue的声明,模板的第三个参数就是比较规则,规则可以是个函数,也可是个仿函数
//template < class T, class Container = vector<T>,
// class Compare = less<typename Container::value_type> > class priority_queue;
struct Node
{
int frequery;
int tr;
/*bool operator() (const Node& lhs, const Node& rhs) const
{
return (lhs.frequery > rhs.frequery);
}*/
friend bool operator> (const Node& lhs, const Node& rhs)
{
return (lhs.frequery > rhs.frequery);
}
};
struct node_greater_comp {
bool operator()(const Node& lhs, const Node& rhs) const
{
return lhs.frequery > rhs.frequery;
}
};
int main()
{
//示例一
{
priority_queue < Node, vector<Node>, greater<Node> > q; //仿函数greater中用到operator>
Node w[10];
w[0].frequery=12;
w[1].frequery=32;
w[2].frequery=34;
q.push(w[0]);
q.push(w[1]);
q.push(w[2]);
while(!q.empty())
{
cout <<q.top().frequery <<" ";
q.pop();
}
cout <<endl;
}
//示例二
{
priority_queue < Node, vector<Node>, node_greater_comp > q; //仿函数node_greater_comp是比较规则
Node w[10];
w[0].frequery=12;
w[1].frequery=32;
w[2].frequery=34;
q.push(w[0]);
q.push(w[1]);
q.push(w[2]);
while(!q.empty())
{
cout <<q.top().frequery <<" ";
q.pop();
}
cout <<endl;
}
return 0;
}
#include <iostream>
//#include <sstream>
//#include <cassert>
//#include <windows.h>
#include <vector>
#include <queue>
using namespace std;
//看看priority_queue的声明,模板的第三个参数就是比较规则,规则可以是个函数,也可是个仿函数
//template < class T, class Container = vector<T>,
// class Compare = less<typename Container::value_type> > class priority_queue;
struct Node
{
int frequery;
int tr;
/*bool operator() (const Node& lhs, const Node& rhs) const
{
return (lhs.frequery > rhs.frequery);
}*/
friend bool operator> (const Node& lhs, const Node& rhs)
{
return (lhs.frequery > rhs.frequery);
}
};
int main()
{
priority_queue < Node, vector<Node>, greater<Node> > q; //仿函数greater中用到operator>
Node w[10];
w[0].frequery=12;
w[1].frequery=32;
w[2].frequery=34;
q.push(w[0]);
q.push(w[1]);
q.push(w[2]);
while(!q.empty())
{
cout <<q.top().frequery <<" ";
q.pop();
}
cout <<endl;
return 0;
}
// 函数对象
struct node_comp {
bool operator()(const node& lhs, const node& rhs) const {
return lhs.frequery < rhs.frequery;
}
}
// 声明方法
std::prior_queue<node, node_comp> my_prior_queue;