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;
viết 21:41 ngày 30/09/2018

typedef pair<int, int> ii;
nghĩa là khai báo kiểu ii là kiểu pair<int,int> hay ii 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áo priority_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ủa priority_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ứa vector<ii> vào vị trí thú 2 nữa

priority_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ước

pair<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>1,2 sẽ bé hơn 2,21,3, pair<string,int> thì abc,1 bé hơn abd,1abc,2.

Thanh Dang viết 21:33 ngày 30/09/2018

Em cảm ơn ạ anh giải thích dễ hiểu thật

Bài liên quan
0