我有一個代表分解URL的類。如何爲結構/字符串類實現比較運算符?
class URL
{
std::string proto_;
std::string host_;
/* other fields */
};
(例如,proto_
可以是HTTP,HTTPS,LDAP; host_
可以是localhost:1234,google.com)。
要比較的真實有意義的值當然是組成的URL。但構建它是昂貴的,我想使用這個類的鑰匙類型爲std::map
。
如何以有效的方式爲此課程實施operator<()
?如何結合不同對象的比較,這些對象在邏輯上構成了一個整體?
我試過使用std::tie
但結果並不如我預期的那樣。
按照意見
這裏要求是目前我在做什麼(工作如預期):
friend bool operator<(const uri &l, const uri &r)
{
std::string ls = l.proto_ + l.host_;
std::string rs = r.proto_ + r.host_;
return ls < rs;
}
按字母順序排列。比較第一個字段。如果相等,請比較第二個字段等。 –
請發佈您嘗試過的內容,期望看到的輸出內容以及實際輸出內容。 –
使用'std :: tie'但沒有錯誤。 – juanchopanza