关于C++中STL容器的基本使用。
前置知识
min : 返回最小值(多个元素或集合) 
max : 返回最大值(多个元素或集合) 
abs : 返回整型绝对值
fabs: 返回浮点型绝对值(常用于浮点型精读确定)
swap: 交换两个基本数据类型或复杂数据类型
sort: 
- sort(begin, end)按升序排序数组
- sort(begin, end, cmp)按返回值为 bool 型的 函数cmp 排序数组
vector
- vector <int> v(N,i): 创建一个长度为N,元素初始化为i的可变长度数组,- (N,i)可省略(默认值为0),- <int>可换为其他数据类型
- v.push_back(a): 将元素a插到数组v的末尾,并增加数组长度
- v.size(): 返回数组v的长度
- sort(v.begin(),v.end()): 排序vector内元素
- reverse(v.begin(),v.end()): 倒置vector内元素
- copy(v.begin(),v.end(),u.begin()+n): 将v复制到- u.begin()+n处
- find(v.begin(),v.end(),n): 在v中查找元素n,并返回n在v中的位置
string
- string s: 创建一个名为s的字符串变量
- s+=str: 在字符串s后拼接字符串str
- s>str: 比较s和str的字典序
- s.length(): 返回字符串s的长度
- s.replace(pos,len,str,[m],[n]): 将s从pos位置开始len长度的内容替换为字符串str从m到n位置的内容
- s.substr(pos,len): 返回指定区间子串
- s.fing(str,[pos]): 在字符串s中从第pos个字符开始寻找str,并返回位置,找不到返回-1
- to_string(): 将整型或浮点型转为字符串
- atoi()- atof(): 分别将字符串转为整型与浮点型
queue
- queue <int> Q: 创建队列Q,元素为int
- Q.push(a): 将元素a插入队列Q末尾
- Q.pop(): 弹出Q队首元素
- Q.front(): 查询Q队首元素
- Q.back(): 查询Q队尾元素
- Q.size(): 查询Q元素个数
- Q.empty(): 查询Q是否为空
stack
- stack <int> s: 创建栈Q,元素为int
- s.push(a): 将元素a压入栈s
- s.pop(): 将s的栈顶元素弹出
- s.top(): 查询s的栈顶元素
- s.size(): 查询s的元素个数
- s.empty(): 查询s是否为空
set/unordered_set
set 由 平衡二叉树 实现
unordered_set 由 Hash表 实现
以下情况用unordered_set:
- 仅需要保存互异的元素而不需要排序
- 只需要获取单个元素而不需要遍历
- set <int> ds: 创建一个名字叫ds,元素类型为int的集合
- ds.insert(x): 在集合中插入一个元素,如果这个元素已经存在,则什么都不干
- ds.erase(x): 在集合中删除元素x,如果这个元素不存在,则什么都不干
- ds.find(x): 查询x在集合中的地址,如果不存在,返回- ds.end()
- ds.lower_bound(x): 查询不小于x的最小数在集合中的地址,如果不存在,返回- ds.end()
- ds.upper_bound(x): 查询大于x的最小数在集合中的地址,如果不存在,返回- ds.end()
- ds.empty(): 如果集合为空,返回1,否则返回0;
- ds.size(): 返回集合中的元素个数
map/unordered_map
map 由 红黑树 实现
unordered_map 由 Hash表 实现
选择:对于有顺序要求的问题,一般用map;对于查找类问题,一般用unordered_map
- map <A,B> ds: 建立一个名字叫做ds、下标类型为B的映射表,例如- map <string,int>就是一个将string映射到int的映射表
- ds[A]=B: 把这个“数组”中,下标为A的位置的值改成B
- ds[A]: 访问这个“数组”中,下标为A的元素
- ds.end(): 返回映射表中最后一个元素的下一个元素的地址
- ds.find(x): 查询x在映射表中的地址,若不存在,返回- ds.end()
- ds.empty(): 如果映射表是空的,返回1,否则返回0
- ds.size(): 返回映射表中元素个数
- ds.erase(): 删除这个“数组”中下标为A的元素
注意:在使用ds[A]访问”数组”下标为A的元素时,如果这个下标对应的元素不存在,则会自动创建下标为A、值为默认值的元素