sort&unique

本篇学习笔记仅为入坑笔记,请STL学习者点上方的叉号❌。

众所周知,排序在程序中会有很多的妙用。

但无论是冒泡、快排、插入排序、桶排等各种花样,总需要好多次的实践才能熟记于心。

用没有快捷的方法呢?

当然,$sort$是STL给出的答案。

SORT

前置

首先你需要:

1
2
#include<algorithm>
using namespace std;

其实命名空间可要可不要,如果去掉的话,在使用时就加一个std::即可啦QAQ。

C++STLsort函数有(2~3)个参数。

为什么是(2~3)个参数呢?

因为在排序时,我们可以自己选择升序或降序。

使用方法

如果对于一个数组进行升序排序,那么

1
2
3
int num[120];
for(int i=1;i<=119;i++)cin>>num[i];
sort(num+1,num+n+1);

重点!:sort函数使用模板$sort(start-place,end-place)$

start-place:排序起点。
end-place:排序终点。

那么如果对于一个数组降序排序时,怎么写呢?

1
2
3
4
bool cmp(int a,int b){
return a>b;
}
sort(num+1,num+n+1,cmp);

和其他STL搭配

1
2
vector<int>v;
sort(v.begin(),v.end());

UNIQUE

unique的功能是对数组伪去重,即把重叠的数字置于数组最后。

前置

你需要:

1
2
#include<algorithm>
using namespace std;

其实命名空间可要可不要,如果去掉的话,在使用时就加一个std::即可啦QAQ。

使用方法

1
2
3
int num[120];
for(int i=1;i<=119;i++)cin>>num[i];
unique(num+1,num+n+1);

若想得到去重后数组元素个数:

1
unique(num+1,num+n+1)-num-1;

例题

luogu P1059

THE END