最近在整理原来的一些资料,偶然想起原来搞OI时讲过一次STL和struct类重载运算符的内容,这里分享给大家
目录
标准模板库(Standard Template Library),惠普实验室开发的一系列软件的统称
在C++标准中,STL被组织为下面头文件:<algorithm>、<deque>、<functional>、<iterator>、<array>、<vector>、<list>、<forward_list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>
调用STL是需要加特定的头文件的
algorithm
sort语句及struct类重载运算符
给定数列Ai,每个数有两个属性值Qi,Wi,按照Qi从小到大排序,若Qi相同,则按Wi从大到小排序
Sort(a+1,a+1+N)表示将a数组的第1位到第N位从小到大排序
如果需要按照其他标准排序呢?
两种实现方法:比较函数cmp实现、Struct类中重载运算符
1、通过比较函数cmp实现
由于STL中默认比较方式为两已有数据类型从小到大排序,即‘<’比较方式,即以下两种对A序列的从小到大排序方式等同。注意两部分sort语句的区别
方式1:
方式2:
我们可以发现:cmp函数为bool类型,那么如果返回true,相当于不交换位置,即当前两元素的位置顺序满足最终目的
前述问题的参考程序如下:
这里有个小细节:新建一个struct类数组时,有如下两种实现方式
2、Struct类中重载运算符
前面说过,默认比较方式按‘<’来执行,因此我们重载的运算符为‘<’,有如下两种方式
方式1:
方式2: