STL排序相关库 - STEMHA's Blog

STL排序相关库

sort

函数声明

1
2
3
4
5
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);

template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

cmp()函数的返回值要是bool,核心要义也是比较。
sort默认是从小到大,所以在cmp如果还是要从小到大,那就a < b,返回值bool为true,不改变;
如果想要从大到小排,那么就要return a > b,因为默认a小于b,所以此时返回的bool就是false,要改变排序。
也就是说,

  • 返回的值是true的话,代表a先放,b后放
  • 返回的值是false的话,代表b先放,a后放

stable_sort

排序的时候保持相对位置,即相同的数字相对位置是不变的。

partition

函数声明

1
2
template <class ForwardIterator, class UnaryPredicate>
ForwardIterator partition (ForwardIterator first, ForwardIterator last, UnaryPredicate pred);

作用:
对[first, last)元素进行处理,使得满足p的元素移到[first, last)前部,不满足的移到后部,返回第一个不满足p元素所在的迭代器,如果都满足的话返回last

stable_partition

排序的时候保持相对位置,即相同的数字相对位置是不变的

参考资料

C++ STL
算法随记:C++ sort()函数,自定义cmp()的使用理解
STL—–排序类——sort与partition
C++ stl算法——partition

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×