Hàm std::sort() trong c++

Các chế ơi cho em hỏi về hàm sort trong c++ với ạ.
Em thấy nó viết như thế này

bool comp(const int a, const int b){
   return a > b;
}
int main(){
   int n;
   cin>>n;
   for(int i=0; i<n; i++) cin>>a[i];
   sort(a,a+n,comp);
}

Cái em không hiểu là tại sao lại xuất hiện comp trong hàm sort ạ??? Nếu có thì nó để làm gì so với sort(a,a+n) thông thường ạ.

1 Like

comp ở đây là tham số truyền vào cho con trỏ hàm của hàm std::sort()
Nếu không có comp thì nó sẽ mặc định sắp xếp tăng dần, giả sử muốn sắp xếp giảm dần hay muốn sắp xếp theo ý mình thì phải tự viết hàm so sánh sau đó truyền vào cho con trỏ hàm của hàm std::sort().
Ngoài ra với các kiểu dữ liệu tự tạo ví dụ class HocSinh, để sử dụng std::sort() sắp sếp HocSinh thì cũng phải tự viết hàm so sánh để truyền vào cho std::sort().
Theo mình hiểu được là như vậy.

2 Likes

Khi không có comp thì hàm sẽ dùng toán tử <= đã định nghĩa.

3 Likes

Ô hay quá em hiểu rồi ạ em cảm ơn :smile:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?