Làm cách nào để sắp xếp một vector STL dựa trên hai tiêu chí so sánh khác nhau? Hàm sort() mặc định chỉ lấy một đối tượng sắp xếp đơn.Sắp xếp một vector STL trên hai giá trị
Trả lời
Bạn cần kết hợp hai tiêu chí thành một. Đây là ví dụ về cách bạn sắp xếp cấu trúc với trường đầu tiên và thứ hai dựa trên trường đầu tiên, sau đó là trường thứ hai.
#include <algorithm>
struct MyEntry {
int first;
int second;
};
bool compare_entry(const MyEntry & e1, const MyEntry & e2) {
if(e1.first != e2.first)
return (e1.first < e2.first);
return (e1.second < e2.second);
}
int main() {
std::vector<MyEntry> vec = get_some_entries();
std::sort(vec.begin(), vec.end(), compare_entry);
}
Chú ý: thực hiện compare_entry
cập nhật để sử dụng mã từ Nawaz.
+1, Tiến về phía trước. Tôi cũng nghĩ như vậy. Nhưng vẫn còn nghi ngờ nếu OP đang suy nghĩ trong cùng một dòng. – iammilind
Tuyệt vời, đã hoạt động, cảm ơn bạn! Tôi quên phần if (e1.first == e2.first), vì vậy nó đã thất bại đối với tôi. – toastie
@Michael: Tôi đã thêm một triển khai khác của hàm 'compary_entry'. Hy vọng nó ổn với bạn. :-) +1 BTW. – Nawaz
- 1. Sắp xếp mảng hai chiều theo giá trị thứ hai
- 2. Làm thế nào để sắp xếp một std :: vector bởi các giá trị của một std :: vector khác nhau?
- 3. Sắp xếp một HashMap dựa trên Giá trị rồi Khóa?
- 4. Sắp xếp theo hai giá trị ưu tiên trên một trong số chúng
- 5. Cách sử dụng lower_bound để chèn giá trị vào các vector được sắp xếp
- 6. Có thùng chứa được sắp xếp trong STL
- 7. Sắp xếp danh sách theo giá trị
- 8. Làm cách nào để sắp xếp bản đồ STL theo giá trị?
- 9. Sắp xếp danh sách chung trên hai hoặc nhiều giá trị
- 10. Sắp xếp bảng băm PowerShell trên thuộc tính giá trị
- 11. Sắp xếp một mảng hai chiều dựa trên một cột
- 12. Sử dụng Đếm sắp xếp theo giá trị âm?
- 13. Sắp xếp đồ theo giá trị
- 14. Sắp xếp các giá trị trong HttpServletRequest.getParameterValues ()
- 15. Sắp xếp các giá trị của bộ
- 16. Matlab - sắp xếp theo giá trị tuyệt đối
- 17. Sắp xếp một vector các đối tượng trong C++
- 18. MySQL: Sắp xếp các giá trị GROUP_CONCAT
- 19. In một dict được sắp xếp theo các giá trị
- 20. Đối tượng cặp giá trị khóa sắp xếp Javascript dựa trên giá trị
- 21. Cách sắp xếp LinkedHashMap theo trường giá trị của nó?
- 22. Sắp xếp thứ tự trong bản đồ STL và đặt
- 23. Sắp xếp một tiêu chuẩn :: bản đồ theo giá trị trước khi xuất & hủy
- 24. Các loại được sắp xếp và đối số truyền theo giá trị
- 25. Tìm cách tìm một vector C++ STL bên trong một vector STL
- 26. Kết hợp hai vectơ STL với một mẫu thay thế
- 27. sắp xếp một vector của các cấu trúc
- 28. OpenMP và STL vector
- 29. Làm thế nào để sắp xếp một đối tượng std :: vector theo giá trị float của nó
- 30. IOS cần sắp xếp một loạt các giá trị từ điển dựa trên giá trị quan trọng
Bạn có thể xây dựng thêm chi tiết không? Tiêu chí nào bạn muốn? – iammilind
Thông tin thêm –
Tôi sắp xếp danh sách các đối tượng có hai thuộc tính khác nhau: khoảng cách và tầm quan trọng. Một trong những tính chất so sánh này (tầm quan trọng cao hơn) sẽ ghi đè (khoảng cách gần hơn) của các thuộc tính khác. Vì vậy, nếu nhập khẩu của một đối tượng là 1 và của người kia là 0, nó sẽ được sắp xếp cao hơn thứ hai ngay cả khi khoảng cách lớn hơn. Tôi không thể tìm ra cách để làm điều đó chỉ với một so sánh. – toastie