STL初探

关于algorithm的一些东西

感言:

学C++不学STL函数库的人可能都是。。。

STL初探

 

有点问题

STL初探

sort,快排:

这是个初学者必需掌握的东西,及其好用,因为方(lan)便(duo)。

sort(a+1,a+1+n);是最基本的,你还可以根据这个随意改变数组名称,区间范围(只要确定你需要排序数组的开头和结尾的数组的代号)

#include<iostream>
#include<algorithm>
using namespace std;
int n;
int main()
{
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++)
    cout<<a[i];
}

 

next_permutation与prev_permutation,不重复的全排列:

这玩意貌似没啥人知道,因为全排列可以自己打,而且STL本来就慢,但是因为方(lan)便(duo)还是挺好用的。这里介绍一下,next_permutation是按照字典序排列的全排列而prev_permutation则是逆字典序排列的。要使用这个东西,你必须确定你需要排列数组的值的

顺序!!!

例如,你用next_permutation排列(3,1,2)会得出(3,1,2);(3,2,1);

而用next_permutation排列(1,2,3)会得出(1,2,3);(1,3,2);(2,1,3);(2,3,1);(3,1,2);(3,2,1);

所以顺序很重要!!!如果你想要得出全部答案一个范围的排序,next_permutation你就从小到大来,prev_permutation你就从大到小来,值得一提的是这玩意返回值是bool类型的,偶买噶!!!;

#include<iostream>
#include<algorithm>
using namespace std;
int n;
int main()
{
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
    cin>>a[i];
    do
    {
        for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
        cout<<endl;
    }
    while(next_permutation(a+1,a+n+1));
}

 

 

持续更新中!!!

上一篇:HDU 6630 [2019 Multi-University Training Contest 5]


下一篇:Numpy 随机序列 shuffle & permutation