首页 理论教育 全部元素排序|C++STL精解

全部元素排序|C++STL精解

时间:2023-10-25 理论教育 版权反馈
【摘要】:sort()算法和stable_sort()算法支持对容器(序列)中所有元素的排序。由于list型容器不支持随机访问型迭代器,所以不能使用这里两个算法,但是list型容器提供了sort()成员函数,可用于自身元素的排序。其第二种形式均以二元判断式pr作为排序准则。顾名思义,stable_sort()会比sort()更加稳定、可靠。图4-26 例4-26的执行效果用户可以自定义二元判断式算法。算法的定义如下:上述省略部分在此仅举两例:1)若T为int型,则省略部分可为:res=。

全部元素排序|C++STL精解

sort()算法和stable_sort()算法支持对容器(序列)中所有元素的排序。sort()算法和stable_sort()算法需要访问随机访问型迭代器,只能适用于vector型和deque型容器。由于list型容器不支持随机访问型迭代器,所以不能使用这里两个算法,但是list型容器提供了sort()成员函数,可用于自身元素的排序。

sort()算法和stable_sort()的原型为:

978-7-111-51399-5-Chapter04-97.jpg

978-7-111-51399-5-Chapter04-98.jpg

stable_sort()算法能够保持序列或容器中的元素相对顺序不改变,而sort()则不能。上述两种算法均具有两种形式的原型。其第二种形式均以二元判断式pr(elem1,elem2)作为排序准则。顾名思义,stable_sort()会比sort()更加稳定、可靠。上述原型中RanIt代表(随机访问迭代器)。

上述两种算法的默认排序准则是:利用“operator<”实现升序排序。可以利用规则表达式实现降序排序,也可以使用自定义的规则表达式,详见例4-26。

例4-26

978-7-111-51399-5-Chapter04-99.jpg(www.xing528.com)

例4-26的执行效果如图4-26所示。

978-7-111-51399-5-Chapter04-100.jpg

图4-26 例4-26的执行效果

用户可以自定义二元判断式算法。算法的定义如下:

978-7-111-51399-5-Chapter04-101.jpg

上述省略部分在此仅举两例:

1)若T为int型,则省略部分可为:res=(elem1>elem2)。

2)若T为string型,则省略部分可为:res=(elem1.length()>elem2.length())。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈