【发布时间】:2015-03-09 15:56:56
【问题描述】:
我想使用map<string, int> 来存储字符串及其出现。
由于要求,我必须以与授予的字典顺序不同的顺序重载 std::string 的“
bool operator<(const string& a, const string& b) {
int mini = min (a.length(), b.length());
for(int i=0; i < mini; ++i){
if (a[i] < b[i])
return true;
}
if (a.length() <= b.length()) return false;
return true;
}
但是,它不会被调用。字典顺序被调用。 这是正确的方法吗?
【问题讨论】:
-
这就是为什么订购容器support a custom comparator。
-
您是如何创建地图的?您是否以某种方式告诉它应该使用您的自定义运算符?另外,您确定要在任何地方(在不知不觉中)比较字符串时使用它吗?
-
是的,这就是我想做的。根据我的订单而不是词典制作地图
-
请注意,您的运营商违反了严格的总订购要求。具体来说,您同时拥有
"a" < "bb"和"bb" < "a"。 -
嗨,molbdnilo,不,它是严格排序的,“a” "bb"
标签: c++ string stl operator-overloading