30/09/2018, 19:26
Em hỏi về phần code
Cho em hỏi source code khai báo thế này nghĩa là ntn ạ?
priority_queue< ii, vector<ii>, greater<ii> > pq;
với
typedef pair<int, int> ii;
Bài liên quan
typedef pair<int, int> ii;
nghĩa là khai báo kiểu
ii
là kiểupair<int,int>
hayii
là 1 cặp số nguyên (int int)priority_queue< ii, vector<ii>, greater<ii> > pq;
là khai báo biến
pq
là hàng đợi theo thứ tự từ lớn tới nhỏ (greater<ii>
). Bình thường chỉ cần khai báopriority_queue<ii> minPQ;
nghĩa là minPQ là hàng đợi chứa các cặp số nguyên từ nhỏ tới lớn. Mặc định củapriority_queue
là phần tử nhỏ nhất ra trước. Muốn đổi thành cặp số lớn ra trước thì phải thêm hàm so sánh vào, nhưng ngặt nỗi là vị trí của hàm so sánh ở vị trí thứ 3 nên phải thêm kiểu thùng chứavector<ii>
vào vị trí thú 2 nữapriority_queue< kiểu T, kiểu thùng chứa, hàm so sánh >
trong đó kiểu thùng chứa mặc định là
vector<T>
, hàm so sánh mặc định làless<T>
nghĩa là bé nhất ra trướcpair<U,V>
có cho phép so sánh theo thứ tự trước sau, so sánh phần tử thứ nhất trước, nếu bằng nhau thì so sánh phần tử tiếp theo. Ví dụpair<int,int>
là1,2
sẽ bé hơn2,2
và1,3
,pair<string,int>
thìabc,1
bé hơnabd,1
vàabc,2
.Em cảm ơn ạ anh giải thích dễ hiểu thật