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
iilà kiểupair<int,int>hayiilà 1 cặp số nguyên (int int)priority_queue< ii, vector<ii>, greater<ii> > pq;là khai báo biến
pqlà 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_queuelà 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,2sẽ bé hơn2,2và1,3,pair<string,int>thìabc,1bé hơnabd,1vàabc,2.Em cảm ơn ạ anh giải thích dễ hiểu thật