STL初探

Posted yycether666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL初探相关的知识,希望对你有一定的参考价值。

关于algorithm的一些东西

感言:

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

技术图片

 

有点问题

技术图片


 

 

 

头文件<algorithm>的一些东西

 

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));
}

 

 


 

持续更新中!!!

以上是关于STL初探的主要内容,如果未能解决你的问题,请参考以下文章

STL初探

STL初探——设计一个简单的空间配置器

STL初探——构造和析构的基本工具: construct()和destroy()

STL初探——第一级配置 __malloc_alloc_template的学习心得

STL初探——第二级配置器 __default_alloc_template的学习心得

初探JSP与LEeclipse