STL中有很多排序算法,如sort(),next_permutation(),查阅c++ preference,得知两个函数的声明分别为:
sort(iterator it1,iterator it2) 两个迭代器it1和it2 分别代表某个容器的迭代器
next_permutation(iterator it1,iterator it2) 两个迭代器it1和it2 分别代表某个容器的迭代器
最近在做牛客网上的题目,碰到一个,求一个字符串的全排列,如果不用STL算法去写该代码,则需要用递归思想,进行分治算法来去做,代码比较复杂,而用STL算法,则可以很快解决。
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
string ss("dbca");
sort(ss.begin(),ss.end());///首先对其进行字典排序,使其能得到全部的全排列
vector<string> ve;
do
{
ve.push_back(ss);///全排列的字符全部存入vector
}while(next_permutation(ss.begin(),ss.end()));///对其进行全排列
vector<string>::iterator it;
for(it=ve.begin();it!=ve.end();it++)
{
cout<<*it<<endl;
}
}