我有一个代表分解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