首页 > 编程知识 正文

如何理解运算符重载,比较两种运算符重载形式

时间:2023-05-06 21:33:16 阅读:248492 作者:2856

重载比较运算符,现在我这里整理了三种方法 1、修改比较函数(默认less) 2、重载 < 运算符 3、自定义比较函数

 

注:因为set容器默认是升序要降序的话,就可以使用这三种方法

 

1、修改比较函数(默认less)

#include <iostream>#include <set>using namespace std;int main(int argc, const char * argv[]) { // insert code here... set<int,greater<int>> s; set<int,greater<int>> ::iterator iter; s.insert(1); s.insert(2); s.insert(3); s.insert(4); for(iter=s.begin();iter!=s.end();iter++) cout<<*iter<<" "; cout<<endl; return 0; }

这个方法的重点就在于set<ing,gteater<int>> 中的 <gteater<int>>

greater表示内置类型从大到小排序,less表示内置类型从小到大排序

 

2、重载   <   运算符

 

#include <iostream>#include <set>#include <iterator>using namespace std;class Integer{ int data;public: Integer(int a=3){//这个地方a等于几没啥影响 data=a; } bool operator < (const Integer b) const{//语法要求必须重载成常成员函数 return data>b.data; } friend ostream & operator << (ostream & out,Integer a){//输出的是对象,必须重载输出 out<<a.data; return out; } };int main() { set<Integer> s; set<Integer>::iterator ite; Integer a(1),b(3); s.insert(a); s.insert(b); for(ite=s.begin();ite!=s.end();ite++){ cout<<*ite<<""; } return 0;}

 

 

3、自定义比较函数

#include<iostream>#include<set>using namespace std;struct mycomp{ //自定义比较函数,重载“()”操作符 bool operator() (const int &a, const int &b) { if(a != b) return a > b; else return a > b; }};int main(){ set<int, mycomp> s; //采用比较函数mycomp s.insert(5); //第一次插入5,可以插入 s.insert(1); s.insert(6); s.insert(3); s.insert(5); //第二次插入5,重复元素,不会插入 set<int,mycomp>::iterator it; for(it = s.begin(); it != s.end(); it++) cout << *it << " "; cout << endl; return 0;}

 

 

 

 

 

 

 

UCloud云社区

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。