21xrx.com
2024-12-22 22:12:01 Sunday
登录
文章检索 我的文章 写文章
C++中的vector排序技巧
2023-07-09 06:10:53 深夜i     --     --
C++ vector 排序技巧 STL 算法

C++中的vector是一种非常常用的动态数组容器,它可以存储任何类型的数据,并且可以根据不同的需求进行排序。但是,排序的方法很多,不同的方法对于不同的需求有不同的优缺点。在本文中,我们将为大家介绍C++中vector的排序技巧,希望能够帮助大家更好地使用vector。

1. sort函数

sort函数是C++ STL中一个非常常用的排序函数,它可以对数组、容器进行排序。在使用sort函数时,需要包含头文件 #include ,并且传入两个迭代器,表示要排序的区间。例如:


#include<algorithm>

#include<vector>

using namespace std;

vector<int> vi;

//向vi中添加元素...

sort(vi.begin(),vi.end());

sort函数默认是升序排序,如果要进行降序排序,则需要另外定义一个比较函数,例如:


bool cmp(int a,int b)

  return a>b;

sort(vi.begin(),vi.end(),cmp);

2. stable_sort函数

stable_sort函数和sort函数类似,也是用来对数组、容器进行排序的函数,其排序规则也是默认升序。和sort函数不同的是,stable_sort函数是一种稳定排序算法,可以保证排序后相等的元素的相对顺序不变。例如:


stable_sort(vi.begin(),vi.end());

同样的,如果要进行降序排序,则需要定义一个比较函数。

3. partial_sort函数

partial_sort函数可以对容器中的部分元素进行排序,它有三个参数:第一个参数是要排序的初始位置,第二个参数是排序结束的位置,第三个参数是最终排序结果的结束位置。例如:


partial_sort(vi.begin(),vi.begin()+k,vi.end());

上述代码表示对vi中前k个元素进行排序,排序结果保存在vi.begin()到vi.begin()+k-1的位置。partial_sort函数默认使用std::less进行升序排序,如果要进行降序排序,则需要自定义一个比较函数。

4. nth_element函数

nth_element函数可以在不完全排序的情况下快速找到第n个元素。它有两个参数:第一个参数是要排序的初始位置,第二个参数是排序结束的位置。例如:


nth_element(vi.begin(),vi.begin()+k-1,vi.end());

上述代码表示找到vi中第k小的元素。nth_element函数默认使用std::less进行升序排序,如果要找到第k大的元素,则需要自定义一个比较函数。

总结

在C++中,vector是一种非常常用的容器,可以存储任何类型的数据,并且可以根据不同的需求进行排序。本文介绍了C++中vector的四种排序方法:sort函数、stable_sort函数、partial_sort函数、nth_element函数。通过本文的了解,希望能够帮助大家更好地使用vector。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复