#include<algorithm>中的fill(begin,end,val)是将区间[begin,end)每个元素都赋值为val。
#include<cstring>中的memset(a,0,sizeof(a))是按字节填充。
所有不可以用memset初始化int数组为1,那样会给每个字节赋值为00000001,即
00000001000000010000000100000001
所有一般memset有以下几种用法:
memset(a,0,sizeof(a)); //初始化为0
memset(a,-1,sizeof(a)); //初始化为-1
memset(a,0x3f,sizeof(a)); //初始化为最大值0x3f3f3f3f
memset(a,0xcf,sizeof(a)); //初始化为最小值0xcfcfcfcf
next_permutation(begin,end) /per_permution(begin,end)
前者求按字典序的下一个排列
后者求按字典序的前一个排列
int a[3];
a[0]=1;
a[1]=2;
a[2]=3;
do{
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
}while(next_permutation(a,a+3));
char ch[205];
cin>>ch;
sort(ch,ch+strlen(ch));
char *first=ch;
char *last=ch+strlen(ch);
do{
cout<<ch;
}while(next_permutation(first,last));
string s;
cin>>s;
sort(s.begin(),s.end());
cout<<s<<endl;
while(next_permutation(s.begin(),s.end()))
cout<<s<<endl;