目录
sort函数
用法:
头文件
#include<algorithm>
sort(a,a+10) 前闭后开区间
默认升序
其他排列方式:
1.
sort(a,a+10,比较函数) 比较函数
bool cmp(int a,int b){
return a>b;
}
2.
‘<'运算符重载
情景:
1.需要排序的时候,可以将数按升序排列
2.需要把字符按字典顺序排列时
字符串:
sort(str.begin(),str.end());
3.可以用结构体,排每位数的大小
struct node{
int x;
int y;
};
bool cmp(node a,node b){
if(a.x!=b.x) return a.x>b.y;
return a.y<b.y;
}
参考:
vector
定义:vector <data_type> vector_name;
如:vector <int> v;
v.empty() 返回bool型,可以用来判断vector是否为空
v.pop_back() 可以将最尾端的元素删除
v[i] 类似于数组
1.v.push_back(a);
当需要延长数组时 ,将元素a插入v的末尾,v长度增加
2.vector可以像二维数组那样
vector< vector<数据类型> > 里面的vector<>两端加' '防止>>
3.vector用在不确定数组大小的时候,可以大大节省内存
4. vector<int>v(N,i) ;N个元素,每个元素初始化为i
可以初始化vector的大小
可以填充vector内的元素
5.v.size(); 返回数组v的大小
6.v.resize(n,m) 重新调整vector的大小,删除多余的,用m填充多余的
用在需要调整数组大小时
7.vector<int >::iterator; 定义一个名叫作it的迭代器
it 可以++或-- *it取指针it中的元素
8.v.begin(); 返回数组v首元素(也就是v[0])的指针
9.v.end(); 返回数组v末尾元素的下一个元素的指针
10.v[i]和*(v.begin()+i) 一样
可以用于函数
例题:
【深基15.例2】寄包柜 - 洛谷https://www.luogu.com.cn/problem/P3613
【深基15.例1】询问学号 - 洛谷https://www.luogu.com.cn/problem/P3156
ios::sync_with_stdio(false);
加快速度
高精度
情景:计算的数的数位过大时
用法:用数组表示每一位
例题:
P1601 A+B Problem(高精) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1601P1303 A*B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
https://www.luogu.com.cn/problem/P1303
部分string
口算练习题 - 洛谷https://www.luogu.com.cn/problem/P1957
1.当元素在字符串(char类型)中,用sscanf(字符串名,"% ",&a); 将字符串中的一个元素,输入到变量a中,忽略空格;
2.用sprintf(字符串名,"% ",a);将变量a的值输入到字符串中;
3.循环中,每次输入新的字符串元素,都会覆盖
4.strlen(字符串名) 字符串的长度
5.当需输入标志,如果下次不输入标志时,按上个标志运算,可以用一个变量last,用if判断;
6.需读入一行字符串,连空格也存入,用fgets(s,sizeof(s),stdin);