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<<'
';
}
数组的全排列
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<<'
';
++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++))