我很困惑嚴格的弱排序以及如何在定義運算符<時使用它。我有一對夫婦結構的:嚴格的弱排序混淆
struct Plane
{
std::string name;
int xrudder;
int yrudder;
int wingwidgets;
bool hasLegacyEngine;
};
struct Airport
{
bool securityCheck;
unsigned __int64 capacity;
std::vector<Plane> planes;
};
,我想創造機場的std::set
。我需要定義運算符<,它使用嚴格的弱排序,但我不確切地知道這意味着什麼和/或如何去做。
struct cmpless
{
bool operator()(const Airport& left, const Airport& right)
{
//?
}
};
std::set<Airport, cmpless> airportSet;
這是沒有意義的一個機場是「小於」另一個。只有機場根據他們的統計資料是平等的,這纔有意義。
如何確定我的運營商<的定義將遵循嚴格的弱排序?我如何開始考慮在這種情況下定義operator<
?
如果可能的話,一個解釋的例子會很棒!
我看到你給每架飛機一個名字,但你的機場沒有任何名字。如果您給機場一個名稱,您可以使用詞法字符串比較,因爲它定義了嚴格的弱排序。 – Zeta