vector:变长数组
定义
头文件:#include<vector>
vector<int> name;
vector<node> name;
vector<int> vi[10]; //一维长度固定的二维数组
vector<vector<int> > vi; //二维长度都不固定的二维数组
访问
vector<int>::iterator iter;
it=vec.begin();
it=vec.end();
vector<int>::reverse_iterator r_iter
r_iter=vec.rbegin();
r_iter=vec.rend();
常用函数
函数 | 描述 |
---|
push_back(x) | 添加元素x | pop_back() | 移除尾元素 | size() | 长度 | clear() | 清空 | insert(iterator,x) | 在迭代器位置添加元素 x | erase(iterator) | 删除迭代器处的元素 | erase(firstIterator,lastIterator) | 删除 [ )区间的元素 |
set:有序不重复
定义 :头文件 #include<set> 类似vector
访问:迭代器访问
常用函数
函数 | 描述 |
---|
insert(x) | 添加元素x | find(value) | 返回值为value的元素的迭代器 | erase(iterator) | 删除迭代器处的元素 | erase(value) | 删除值为value的元素 | erase(firstIterator,lastIterator) | 删除[ )区间的元素 | size() | 长度 | clear() | 清空 |
string:字符串
定义
头文件`#include<string>`
string str="abcd";
如果要读入或者输出整个字符串,只能用 cin 和 cout (头文件#include<iostream> ) 使用printf输出字符串 printf("%s",str.c_str() ) ,转换成字符数组输出
访问
常用函数
函数 | 描述 |
---|
+ | 拼接两个string | =、!=、<、> | 比较字符串 | size() | 长度 | insert(pos,string) | 在指定位置插入字符串 | erase(iterator)、erase(first_iterator,last_iterator) | 删除单个元素或区间元素 | clear() | 清空 | substr(pos,len) | 截取字符串,若len大于剩余长度,则截取到str末尾 | find(str) | 在当前字符串中查找str,返回第一次出现的下标位置,若查找失败返回string::npos | replace(pos,len,str2) | 从pos位置起,长度为len的字串替换为str2 |
map:键值对,key有序不重复
map可以是任何基本类型(包括STL)映射到任何基本类型(包括STL)
定义:头文件#include<map> ,声明map<type1,type2> mp;
访问
- 下标:mp[“string”]、mp[‘a’] …
- 迭代器
map<type1,type2>::iterator it; 通过it->first ,it->second 访问键和值
常用函数
函数 | 描述 |
---|
find(key) | 返回键为key的键值对的迭代器 | erase(iterator)、erase(key)、erase(first_iterator,last_iterator) | 删除单个元素或区间元素 | size() | 长度 | clear() | 清空 |
unorder_map<type1,type2> mp //声明 #include<unorder_map> ,不排序map
queue:队列
定义:头文件#include<queue> ,声明queue<type> qu;
函数 | 描述 |
---|
front() | 获得队首元素 | back() | 获得队尾元素 | push(x) | x入队 | pop() | 出队 | empty() | 检测是否为空 | size() | 长度 |
priority_queue:优先队列
定义:头文件#include<queue> ,声明priority_queue<type> qu;
常用函数
函数 | 描述 |
---|
push(x) | x入队 | pop() | 出队 | top() | 获得队首元素,使用前判断是否为空 | empty() | 判断为空 | size() | 长度 |
优先级设置
默认越大排前面:priority_queue<int> qu ; priority_queue<int, vector<int> ,less<int> >
小的排前面:priority_queue< int, vector<int> ,greater<int> >
struct fruit{
string name;
int price;
friend bool operator < (fruit f1 , fruit f2){
return f1.price<f2.price; // 按price排序,< <不变,价格大的排前面
stack:栈
定义:头文件 #include<stack> , 声明 stack<type> st;
常用方法
函数 | 描述 |
---|
push(x) | x入队 | pop() | 出队 | top() | 获得栈顶元素 | empty() | 判断是否为空 | size() | 长度 |
algorithm常用函数
函数 | 描述 |
---|
max(x,y)、min(x,y)、abs(x) | 最大值,最小值(参数只能两个,可以为浮点数);abs(x),必须为整数;fabs(x) ,x可为浮点数 | swap(x,y) | 交换x和y的值 | reverse(t1,t2) | 将指针或者迭代器在 [t1,t2) 内的元素反转 | next_permutation(t1,t2) | 返回值bool,改变指针或迭代器[t1,t2)内元素的位置,全排列最后一个返回false | fill(t1,t2,val) | 将数组或者容器迭代器[t1,t2)范围内的值填充为val |
lower_bound() 和 upper_bound()
使用条件:有序数组或容器
lower_bound(first,last,val) :查找数组或容器 [first,last) 范围内大于等于val元素的位置,数组返回该位置指针,容器返回该位置迭代器
upper_bound(first,last,val) ::查找数组或容器 [first,last) 范围内第一个大于val值的元素的位置,数组返回该位置指针,容器返回该位置迭代器
如果没有找到该元素,返回val应该插入的位置的指针或迭代器
sort
对数组指针或容器迭代器 [t1,t2) 的元素排序,sort(a,a+10,cmp) ,默认小到大,第三个参数是比较函数,非必填
cmp函数
bool cmp(type a, type b){
return a>b;
}
bool cmp(node a,node b){
return a.x>b.y; // 按照x的大小将结构体从大到小排序
}
bool cmp(string a,string b){
return a>b;
}
|