运算符重载,迭代器

【1】
bool operator > (const Book &p) const {     return p.isbn < isbn; }
是对运算符 > 的重载 ,const Book &p 是 对类Book 的引用 &p,p.isbn < isbn  是对类中成员 isbn比较大小,并返回bool 型的值。

【2】
在STL中,如果要将自定义的类型放入到set中的话,就需要重载“<”符号。原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列。
假设现在设计如下类型:
这时,为了让MyType类型可以顺利地放进set中,我们必须重载“<”,那么问题来了,要如何重载呢?
class MyType
{
public:
  int a, b, c;
}
这个类型有三个数据成员,不妨要求先按a值从小到大排列,如果a值相等,就按照b和c的大小排列。
bool operator<(const MyType& myType) const
{
  return a<myType.a?true:(b<myType.b?true:c<myType.c);
}

这样一来,set就可以正常工作了。当有MyType(1,2,3)、MyType(1,2,4)两个元素时,运行结果如下:
<1,2,3> <1,2,4>
【3】
C++语法解释:
map<int, string>::iterator iter 是声明一个 迭代器。iterator类是在map<int, string>类中定义的,所以如果要使用它,需要使用作用域解析操作符::。“迭代器相当于指针! 不过更安全些。每种容器都定义了迭代器,迭代器在STL中相当重要,它将容器和算法链接起来 ,用容器的时候迭代器是十分必须的。

map<int, string> iter 是 声明一个map容器。
【4】
 运算符重载格式:
<返回类型说明符> operator <运算符符号>(<参数表>)
  {
  <函数体>
  }

【5】
表有两列,要求:

1.第二列从大到小排列

2.若第二列相等,第一列从小到大排序

C++运算符重载 实现

struct Job{
 8     int x,y;
 9     bool operator < (const Job &j) const { //operator
10         if(y==j.y){
11             return x < j.x;
12         }
13         return y > j.y;
14     }
15 };
vector<Job> v;
24         for(int i=0;i<n;i++){
25             scanf("%d%d",&x,&y);
26             v.push_back(Job{x,y}); //vector的末尾插入一个元素
27         }






解C++语法map<int, string>::iterator iter

解释C++语法map<int, string>::iterator iter

解释C++语法map<int, string>::iterator iter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值