在做acm時往往利用庫函數可以既方便又高效的解決一些問題,下面就記錄下最近用到的庫函數來幫助自己熟悉STL,不定期跟新。
1.sort()函數
stl自帶的排序函數,使用頭文件的#include <algorithm>。在排序問題中使用此函數可以省去很多精力。
int main()
{
string arr[100];
string tmp;
while(cin>>tmp)
arr[++index]=tmp;
sort(arr,arr+index+1);//利用sort函數排序
for(int i=0;i<=index;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
此例中sort函數有兩個參數,第一個是指向序列頭的指針,第二個是指向序列尾下一位的指針。默認升序排序。
sort還可以有第三個參數,形式如:sort(arr,arr+index+1,cmp);cmp是自定義的比較規則,下面的例子就是按照兩個字符串中A的數量進行排序的規則。
bool cmp(string str1,string str2)
{
int num1=0,num2=0;
for(int i=0;i<str1.length();++i)
{
if(str1[i]=='A')
num1++;
}
for(int i=0;i<str2.length();++i)
{
if(str2[i]=='A')
num2++;
}
return num1<num2;
}
2._strrev()函數(strrev()已經過時了,新版本加下劃線)
字符串逆置函數,頭文件#include <string.h>,參數是一個char數組。處理字符串的利器,返回一個逆置字符串的指針。例子如下
int main()
{
char temp[100];
char *tmp;
cin>>temp;
tmp=strrev(temp);
cout<<tmp;
return 0;
}