Cách định nghĩa thứ tự trước sau khi sử dụng std::sort?

Em cần giúp đỡ một chút về lệnh std::sort ạ
cho nhiều giá trị khối lượng và giá trị của món hàng
làm thế nào để có thể định nghĩa lệnh sort (vd sort(a + 1, a + n + 1, cmp) (trong đó cmp là cách định nghĩa) ) theo kiểu cái tỉ lệ(khối lượng/giá trị món hàng) nào lớn hơn thì xếp trước ạ ?
Nhân tiện có thể giúp em cách định nghĩa luôn được không ạ ? (mù tịt :(( )
cái hàm em viết thử quăng đây mà chắc là sai hết ạ :v

struct xuli
{
    float x, d;
};
bool cmp(xuli X, xuli Y)
{
    if ((X.x) / (X.d) > (Y.x) / (Y.d))
        return (X.d) > (Y.d);
    return (X.x) < (Y.x);
}

2 dòng thì trả về true hoặc false luôn chứ!

4 Likes

https://en.cppreference.com/w/cpp/algorithm/sort

returns ​true if the first argument is […] ordered before the second.

Và chuẩn nhất là

bool cmp(const Type& lhs, const Type& rhs)

dùng tham chiếu để tránh copy và const để khóa lại.

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