C++ set

C++ set

有这么一个 需求,set中存放一个pair<int,int>,要实现(1,2)和(2,1)是相等 。
刚开始我以为很简单,因为想到set有保持元素唯一性的功能,在实现的时候并没有成功
参考https://stackoverflow.com/questions/8530042/how-to-contain-my-class-with-stdset
之后,很惊喜,因为发现set可以实现两个关键字组合起来的问题。
重载小于号的方法十分巧妙

if (min(u,v) < min(e.u,e.v))
    result = true;
else if (min(e.u,e.v) < min(u,v))
    result = false;
else
    result = (max(u,v) < max(e.u,e.v));

先比较最小的值,如果任何一方的最小值胜出,判断结果。如果最小值相等,那么比较最大值
参考资料
https://stackoverflow.com/questions/8530042/how-to-contain-my-class-with-stdset
https://blog.csdn.net/love_hot_girl/article/details/12620961

posted @ 2019-02-19 17:08  MalcolmMeng  阅读(418)  评论(0编辑  收藏  举报