30/09/2018, 19:27
Hỏi về code trong C ạ
Em có khai báo struct và 1 priority_queue như sau
int start;
//....
struct point{
int cost;
int vertex;
int fuel
}
//...
priority_queue<point, vector<point>, greater<point> > pq;
Mọi người cho em hỏi là em muốn push 3 số (0,start,0) vào pq thì viết như sau có đúng ko ạ
pq.push(point(0,start,0));
Nếu ko thì làm tn ạ?
Bài liên quan
hàng đợi ưu tiên nó khác hàng đợi ở chỗ nó được sắp xếp theo thứ tự nhất định, mỗi lấn push nó tiến hành tìm kiếm np để nhét vào, đương nhiên nó cấn phải so sánh rồi, do kiểu dữ liệu trong pq của em là struct lên em cần định nghĩa lại toán tử so sánh mà cụ thể ở đây với greater<> thì là phép toán >
VD
bool operator>(point a,point b)
{
return a.cost>b.cost;
}
với việc định ngĩa lại như thế thì pq.top() là pt có cost nhỏ nhất
Thế thì đoạn struct viết thế này ạ anh
việc định nghĩa lại toán tử > đưa ra ngoài như 1 hàm bình thường ấy, trong hàm này ta có thể so sánh 2 struct theo bất kì trường dữ liệu nào ta muốn
http://ideone.com/zGQhki mình test thử thì thấy oke
Oh cảm ơn anh ạ