去重操作:
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