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\)

list容器

  • list是双向循环链表,内存分配非连续的

    list.push_front()在前面添加一个元素

    list.pop_front()删除第一个元素

    list.push_back()在最后插入一个元素

    list.pop_back()删除最后一个元素

    list.front()返回第一个元素

    list.back()返回最后一个元素

    list.sort()排序

    list.erase()删除迭代器指向的元素,并返回下一个字符的位置

    list.insert(,)在迭代器指的位置插入元素,或插入n个在迭代器所指位置

\(it=lis.erase(it)==lis.erase(it++)\)

原文链接: https://www.cnblogs.com/waryan/p/13298787.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    STL函数集

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/365880

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午4:23
下一篇 2023年3月2日 下午4:24

相关推荐