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;
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;
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> là 1,2 sẽ bé hơn 2,2 và 1,3, pair<string,int> thì abc,1 bé hơn abd,1 và abc,2.
Em cảm ơn ạ
anh giải thích dễ hiểu thật
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?