去重操作:
sort(vec.begin(),vec.end());
vec.erase(unique(vec.begin(), vec.end()), vec.end());
nth_element ( a , a + k, a + n) 需要#include<algorithm>
長度為n的數組,將第k小的數放在第k位[下標從0開始],並將比它小的放在它前面,比它大的放在它的后面
string.find()函數的用法
p = s.find(s1) 返回s1在s中出現的第一個位置的下標,若不存在,返回 -1
p = s.find(s1, x) 從下標x開始查找s1,返回出現的第一個位置的下標,若不存在,返回-1
全排列next_permutation #include<algorithm>
while(next_permutation(str.begin(),str.end()) cout<<str<<endl; //輸出全排列
字符串相關
#include<sstream> //用作各個類型之間的轉換
一次性用法:
string s1 = "-234", s2 = "1"; int a,b;
stringstream ss(s1);
ss >> a;
cout << a << endl; //此時a為-234
多次使用:
stringstream ss;
ss << s1; //把s1傳入到ss中
ss >> a; //轉換成int型
cout << a << endl;
ss.clear(); //多次使用清空
ss << s2;
ss >> b;
cout << b << endl;
string s;
s.substr(start, length); //返回的是從下標start開始,長度為length的字符串,若length超過邊界,或者為負數,則返回從start開始直到末尾;
#include<fstream>可以進行讀寫操作的頭文件
一般類型的文件
ifstream fin("FileName")可以只讀取文件內容
int a;
while(fin>>a)就可以不斷讀取數字,碰到空白符(換行、空格)則停止
ofstream in("FileName")可以寫文件內容,存在則覆蓋,否則新建
in<<a<<"\n" 表示寫入一個數字並換行
二進制文件的讀寫
ifstream fin("FileName",ios::binary)只打開二進制文件,ofstream則新建或覆蓋
讀取必須用fin.read((char *)(&a),sizeof(a))表示從文件中讀取一個整型數a出來,a處類型可以任意。
fin.write((char *)(&a),sizeof(a))則是將整形數a寫進二進制文件中,a處類型同上。
每次操作完,記得關閉文件。
格式控制
#include<iomanip>必要的頭文件
int a;
cout << right << setw(10) << setfill('C') << a;
表示右對齊,占10格,左邊不足的用C填充
double b;
cout << left << setiosflags(ios::fixed) << setw(8) << setprecision(4) << showpoint << b;
表示左對齊,顯示小數點后4位,占8格,setiosflags(ios::fixed)的用法是,保證4位小數,不足補0