C++中的partition()和stable_partition()函数如何实现元素分区及其稳定性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1712个文字,预计阅读时间需要7分钟。
partition函数可用于分组,根据用户自定义的筛选规则重新排列指定区域内的存储数据,将其分为2组,第一组为符合筛选条件的数据,第二组为不符合筛选条件的数据。
partition 可直译为“分组”,partition() 函数可根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合筛选条件的数据,另一组为不符合筛选条件的数据。举个例子,假设有一个数组 a[9],其存储数据如下:
1 2 3 4 5 6 7 8 9
在此基础上,如果设定筛选规则为 i%2=0(其中 i 即代指数组 a 中的各个元素),则借助 partition() 函数,a[9] 数组中存储数据的顺序可能变为:1 9 3 7 5 6 4 8 2
其中 {1,9,3,7,5} 为第一组,{6,4,8,2} 为第二组。显然前者中的各个元素都符合筛选条件,而后者则都不符合。由此还可看出,partition() 函数只会根据筛选条件将数据进行分组,并不关心分组后各个元素具体的存储位置。如果想在分组之后仍不改变各元素之间的相对位置,可以选用 stable_partition() 函数。有关此函数的功能和用法,本节后续会做详细讲解。
本文共计1712个文字,预计阅读时间需要7分钟。
partition函数可用于分组,根据用户自定义的筛选规则重新排列指定区域内的存储数据,将其分为2组,第一组为符合筛选条件的数据,第二组为不符合筛选条件的数据。
partition 可直译为“分组”,partition() 函数可根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合筛选条件的数据,另一组为不符合筛选条件的数据。举个例子,假设有一个数组 a[9],其存储数据如下:
1 2 3 4 5 6 7 8 9
在此基础上,如果设定筛选规则为 i%2=0(其中 i 即代指数组 a 中的各个元素),则借助 partition() 函数,a[9] 数组中存储数据的顺序可能变为:1 9 3 7 5 6 4 8 2
其中 {1,9,3,7,5} 为第一组,{6,4,8,2} 为第二组。显然前者中的各个元素都符合筛选条件,而后者则都不符合。由此还可看出,partition() 函数只会根据筛选条件将数据进行分组,并不关心分组后各个元素具体的存储位置。如果想在分组之后仍不改变各元素之间的相对位置,可以选用 stable_partition() 函数。有关此函数的功能和用法,本节后续会做详细讲解。

