自定义类如何使用multiset进行排序
来源:互联网 发布:方维网络 编辑:程序博客网 时间:2024/05/22 22:08
关键点:自定义类需要重载”<”运算符,并且 重载的函数”operator<”参数(如果传的是引用)和函数的类型都要为const。如果参数是非const对象的引用,则会报如下错误:二进制“<”: 没有找到接受“const Interval”类型的右操作数的运算符(或没有可接受的转换)(如果参数非引用,则不会报此错误);如果函数非const,则会报如下错误:二进制“<”: 没有找到接受“const Interval”类型的左操作数的运算符(或没有可接受的转换)。
原因:容器对自定义类对象进行排序时,希望能作用在const对象上,而const对象是不能调用该类的非const的成员函数的。
下面给出一个例子:
#include <iostream>#include <set>using namespace std;class Interval {public: int start; int end; Interval() : start(0), end(0) {} Interval(int s, int e) : start(s), end(e) {} bool operator<(const Interval &B)const { if (start != B.start) return start < B.start; else return end < B.end; } };int main(){ multiset<Interval> intSet; Interval int1(2, 5), int2(3, 4), int3(1, 4); intSet.insert(int1); intSet.insert(int2); intSet.insert(int3); for (multiset<Interval>::iterator it=intSet.begin();it!=intSet.end();++it) { cout<<it->start<<' '<<it->end<<endl; } return 0;}
运行结果:
0 0
- 自定义类如何使用multiset进行排序
- 使用ORDER BY & CHARINDEX 进行自定义排序
- 如何使用自定义的签名进行调试
- C++ 容器使用自定义排序逻辑对中英文进行排序
- 【ios】如何按照自定义类的对象的某个属性进行排序
- java 如何对自定义的对象进行排序
- vector元素为自定义数据时如何进行排序
- 如何对NSArray中自定义的对象进行排序
- Java使用Collections.sort对一个列表进行自定义排序
- 使用algorithm中的sort进行vector的自定义排序
- multiset 的排序规则
- GridView如何进行排序
- 【分享集成】如何使用友盟分享面板进行自定义
- 如何使用Arrays.sort()对自己定义的类进行排序
- 如何使用 DataView 进行数据排序和检索
- java中如何使用TreeMap进行键值对排序
- java中如何使用TreeMap进行键值对排序
- 如何使用hadoop对海量数据进行统计并排序
- C语言标准库函数qsort排序的介绍与使用
- 【转】卷积神经网络全面解析
- serlvet的总结
- 栈、队列的相关知识点
- hihihihihihihi
- 自定义类如何使用multiset进行排序
- android 点9图制作方法
- Android 类似小红书标签效果(补间动画)
- 关于cocopods的 Attempt to read non existent folder的报错解决办法
- SQL 多表delete
- c语言32个关键字
- AbstractCollection抽象类源码解析
- APP产品设计(一)
- 7 款开源 Java 反编译工具