lambda
auto comp=[](const int& lhs, const int& rhs)
{
return lhs < rhs;
};
std::priority_queue<int, std::vector<int>, decltype(comp)> pq(comp);
struct1
struct Pos
{
int x, y, h;
Pos(int x_, int y_, int h_) : x(x_), y(y_), h(h_) {}
// 这里的两个const是需要的
bool operator> (const Pos& a) const {
return h > a.h;
}
};
// greater 使用 operator>
// less 使用 operator<
std::priority_queue<Pos, std::vector<Pos>, greater<Pos>> pq;
struct2
struct Pos
{
int x, y, h;
Pos(int x_, int y_, int h_) : x(x_), y(y_), h(h_) {}
// 这里的两个const是需要的
bool operator> (const Pos& a) const {
return h > a.h;
}
};
// 不加引用不用加const
bool operator> (const Pos& a, const Pos& b)
{
return a.h > b.h;
}
// greater 使用 operator>
// less 使用 operator<
std::priority_queue<Pos, std::vector<Pos>, greater<Pos>> pq;
struct3
struct Pos
{
int x, y, h;
Pos(int x_, int y_, int h_) : x(x_), y(y_), h(h_) {}
};
struct cmp
{
// Pos a, Pos& a, const Pos& a, 都可以
bool operator() (Pos a, Pos b) {
return a.h > b.h;
}
};
std::priority_queue<Pos, std::vector<Pos>, cmp> pq;