1. 程式人生 > 實用技巧 >STL函式集

STL函式集

nth_element函式

求第k大/小的排序函式,第k個前面的均比他小/大,後面的均比他大/小

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int a[]={1,3,4,5,2,9,8,7,10};
    int i;
    cout<<"數列例如以下:"<<endl;
    for(i=0;i<9;i++)
       cout<<a[i]<<" ";
    cout<<endl;
    nth_element(a,a+5,a+9);
    for(i=0;i<9;i++)
       cout<<a[i]<<" ";
    cout<<endl<<"輸出第6小的數: "<<a[5]<<endl; //注意下標是從0開始計數的
    nth_element(a,a+5,a+9,greater<int>());
    for(i=0;i<9;i++)
       cout<<a[i]<<" ";
    cout<<endl<<"輸出第6大的數: "<<a[5]<<endl; //注意下標是從0開始計數的
    system("pause");
    return 0;
}

全排序

字串的全排列

int main()
{
    ll n;cin>>n;
    string str="123456789";
    string x;cin>>x;
    ll cnt=0;
    while(x!=str.substr(0,n)){
        ++cnt;
        next_permutation(str.begin(),str.begin()+n);
    }
    cout<<cnt+1<<'\n';
}

陣列的全排列

int main()
{
    int a[4]={1,4,2,3};
    sort(a,a+4);
    int cnt=1;
    do{
            cout<<cnt<<"  ";
        for(int i=0;i<4;++i)
            cout<<a[i]<<" ";
        cout<<'\n';
        ++cnt;
    }while(next_permutation(a,a+4));
}

參考部落格:https://blog.csdn.net/qian2213762498/article/details/79683905

erase函式

string 類

\(str.erase(x)\)消除包括x及以後的字元並返回\(str\)