Ví dụ: trong tệp tiêu đề C++, nếu tôi đã xác định struct Record
và tôi muốn sử dụng nó để sắp xếp có thể để tôi muốn quá tải less operator
. Dưới đây là ba cách tôi nhận thấy trong mã khác nhau. Tôi gần như nhận thấy rằng: nếu tôi sẽ đặt Record
vào một số std::set
, map
, priority_queue
,… vùng chứa, phiên bản 2 hoạt động (có thể là phiên bản 3); nếu tôi sẽ tiết kiệm Record
vào một vector<Record> v
và sau đó gọi make_heap(v.begin(), v.end())
vv .. sau đó chỉ có phiên bản 1 hoạt động.C++ ít quá tải nhà điều hành, có cách nào để sử dụng?
struct Record
{
char c;
int num;
//version 1
bool operator <(const Record& rhs)
{
return this->num>rhs.num;
}
//version 2
friend bool operator <(const Record& lhs, const Record& rhs) //friend claim has to be here
{
return lhs->num>rhs->num;
}
};
trong file header cùng ví dụ:
//version 3
inline bool operator <(const Record& lhs, const Record& rhs)
{
return lhs->num>rhs->num;
}
Về cơ bản, tôi muốn ném những câu hỏi vào đây để xem nếu ai đó có thể đưa ra một số tóm tắt những gì là khác biệt giữa ba phương pháp và địa điểm phù hợp cho mỗi phiên bản là gì?
Cải thiện chấp nhận đánh giá của bạn. –
bạn có thể vui lòng đăng các chương trình ví dụ hoàn chỉnh cho từng trường hợp không hoạt động –
Tôi không thấy phiên bản nào –