2012-12-29 74 views
5

Vì vậy, trong tài liệu C++ trong tiêu đề có một hàm đẹp cho phép bạn sắp xếp vectơ. Tôi có một lớp học Person. Tôi có một vector của con trỏ đến các đối tượng của lớp đó (vector<Person*>) và tôi muốn so sánh những người theo các thông số khác nhau, ví dụ như tuổi tác, độ dài của tên và như vậy.<algorithm> sắp xếp vector với các đối tượng?

Tôi đã có các hàm trả về các biến cần thiết nhưng tôi không chắc chắn cách thực hiện. Dưới đây là một liên kết đến chức năng vector loại trong C++ tham khảo http://www.cplusplus.com/reference/algorithm/sort/

+0

@Ripounet nếu bạn định đề xuất chỉnh sửa cho một câu hỏi, vui lòng sửa mọi thứ không chỉ là lỗi chính tả trong tiêu đề. Hãy xem các bản sửa đổi để xem những gì cần thiết khác để được khắc phục trên bài đăng này –

+0

@KateGregory OK – Deleplace

Trả lời

14

Đó là đơn giản như vậy:

struct student 
{ 
    string name; 
    string grade; 
}; 

bool cmd(const student & s1, const student & s2) 
{ 
    if (s1.name != s2.name) return s1.name < s2.name; 
    return s1.grade < s2.grade; 
} 

Sau đó:

vector<student> s; 
sort(s.begin(), s.end(), cmd); 

Học sinh sẽ được sắp xếp alphabatically. Nếu hai học sinh có cùng tên, chúng sẽ được sắp xếp theo cấp lớp của chúng.

+0

Cảm ơn bạn! Đó là những gì tôi đang tìm kiếm. – Bloodcount

+0

Cảm ơn! Hãy xem xét việc chọn câu trả lời là tốt nhất nếu bạn cảm thấy nó giải quyết được vấn đề của bạn. –

+0

Tôi sẽ trong 3 phút sau khi hệ thống hẹn giờ cho phép tôi. – Bloodcount

-1

Cố gắng ghi đè toán tử như "<", ">" bằng cách sử dụng cùng một thuộc tính của đối tượng. Sau đó bạn có thể xác định lại một số hoạt động sắp xếp.

Các vấn đề liên quan