【发布时间】:2014-08-11 09:42:52
【问题描述】:
bool operator<(const Binding& b1, const Binding& b2)
{
if(b1.r != b2.r && b1.t1 != b2.t1)
{
if(b1.r != b2.r)
return b1.r < b2.r;
return b1.t1 < b2.t1;
}
return false;
}
我有一个像上面这样的比较功能。基本上,如果其中一个属性匹配,我需要认为对象相等。我正在为我的多图使用这个比较函数,它的键是“绑定”对象。 我面临的问题是 lower_bound 和 upper_bound 函数返回指向有效对象的相同迭代器。例如 (t1 = 1, r = 2) 已经在地图中,当我尝试使用 (t1 = 1, r = 2) 在地图中搜索它时,我得到与上界和下界函数的返回值相同的迭代器.
比较功能有什么问题吗?有没有办法计算一个函数,即使只有一个字段匹配,我仍然可以确保对象是等效的? upper_bound 迭代器不应该返回超过
的对象吗?【问题讨论】:
-
比较需要是严格的弱排序。你所描述的听起来不像。
标签: c++ iterator multimap comparison-operators