MyException - 我的异常网
当前位置:我的异常网» C++ » multiset中的count怎么实现统计元素

multiset中的count怎么实现统计元素

www.MyException.Cn  网友分享于:2013-02-16  浏览:12次
multiset中的count如何实现统计元素?

class nitest
{
friend bool operator<(const nitest&, const nitest&);
public:
nitest(int n = 0) : p(new int(n)){}
~nitest()
{
delete p;
}
private:
int *p;
};
inline bool operator<(const nitest &l, const nitest &r)
{
return *(l.p) < *(r.p);
}
int _tmain(int argc, _TCHAR* argv[])
{
nitest ni1(2);
nitest ni2(6);
nitest ni3(2);
nitest ni4(2);

multiset<nitest> nitestset;
nitestset.insert(ni1);
nitestset.insert(ni2);
nitestset.insert(ni3);
nitestset.insert(ni4);

int gf = nitestset.count(ni1);
}


不明白的地方是,我没有重载nitest的operator==,那multiset::count是怎么比较元素的?nitest的数据是指针,指针是不同啊?为什么gf还能正确得到3?

------解决方案--------------------
!(a<b) && !(b>a)就是a==b
------解决方案--------------------
对于关联容器(set和map系列),容器进行排序所用的比较符是< ,而没有用==,需要查找某个值时用的是等价的概念而不是相等,等价的含义2楼已经解释,直观上!(a<b) && !(b<a)就是a==b 的确是正确的,但对于某些特定的自定义类型重载可能会出现不符合的情况,需要注意

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有