4.4.1 全部元素排序
2025年09月26日
4.4.1 全部元素排序
sort()算法和stable_sort()算法支持对容器(序列)中所有元素的排序。sort()算法和stable_sort()算法需要访问随机访问型迭代器,只能适用于vector型和deque型容器。由于list型容器不支持随机访问型迭代器,所以不能使用这里两个算法,但是list型容器提供了sort()成员函数,可用于自身元素的排序。
sort()算法和stable_sort()的原型为:
和
stable_sort()算法能够保持序列或容器中的元素相对顺序不改变,而sort()则不能。上述两种算法均具有两种形式的原型。其第二种形式均以二元判断式pr(elem1,elem2)作为排序准则。顾名思义,stable_sort()会比sort()更加稳定、可靠。上述原型中RanIt代表(随机访问迭代器)。
上述两种算法的默认排序准则是:利用“operator<”实现升序排序。可以利用规则表达式实现降序排序,也可以使用自定义的规则表达式,详见例4-26。
例4-26
例4-26的执行效果如图4-26所示。
图4-26 例4-26的执行效果
用户可以自定义二元判断式算法。算法的定义如下:
上述省略部分在此仅举两例:
1)若T为int型,则省略部分可为:res=(elem1>elem2)。
2)若T为string型,则省略部分可为:res=(elem1.length()>elem2.length())。