字串与子序列
名称 性质 字串 一定是连续的 子序列 不一定是连续的
表达式
表达式:前缀表达式·中缀表达式·后缀表达式(常考)
中缀转后缀
1.根据运算符的优先级对中缀表达式
2.将运算符移到对应的符号后面
3.去掉所有括号
修改前:82+3∗(20−8)÷282+3*(20-8)\div282+3∗(20−8)÷2
修改后:828282 333 202020 8−∗2÷+8-*2\div+8−∗2÷+
##STL模板库
Standard Template Library
STL包括容器(Containers)$ swap(),,,sort()$均在STL中。
常见容器:map set list queue vector
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VECTOR
vector的定义
是一个能够自动调整大小的动态数组,可以在运行是动态地增加或减少其大小。
vector<类型名> 动态数组名;//头文件:#include<vector>.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
迭代器
格式:容器类名::iterator 变量名
迭代器常用操作
常用操作 含义 begin() 指向容器第一个位置的迭代器 end() 指向容器尾部的下一个位置的迭代器。 ++//将迭代器指向下一个位置 *//获取迭代器指向的元素
VECTOR 的遍历
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SET
定义:set容器是一种自动升序且不含重复元素的数据结构。
添加元素:s.insert()
方法 功能 示例 size() 查看当前容器有多少数据个数 s.size(); insert(x) 向当前容器插入数据xxx s.insert(); eraser(x) 删除值为xxx的所有元素 s.eraser(); find(x) 查找集合中xxx的元素,存在xxx返回该元素的迭代器,否则返回end(); s.find(); lower_bound(x) 查找第一个大于等于xxx的下标 s.lower_bound(x)或s.lower_bound(s.begin(),s.end(),x); upper_bound(x) 查找第一个大于xxx的下标
s.lower_bound(x)或s.lower_bound(s.begin(),s.end(),x); count(x) 1在0不在 s.count(x) 注:
* lower_bound(x)的含义是查找第一个大于等于xxx的下标;
* upper_bound(x)的含义是查找第一个大于xxx的下标。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAP
定义:map是C++STL容器中的容器之一,它提供了键-值对的储存方式存储映射关系。每个键必须是唯一的!
时间复杂度:O(logn)O(log_n)O(logn );
只能通过键来访问值,不能用值来访问键。
创建mapmapmap容器:
使用mapmapmap迭代器:
方法 时间复杂度 功能 示例 size() O(1)O(1)O(1) 查看当前容器有多少数据个数 mp.size(); eraser(x) O(logn)O(log_n)O(logn ) 删除值为xxx的所有元素 s.eraser(); find(x) O(logn)O(log_n)O(logn ) 查找集合中xxx的元素,存在xxx返回该元素的迭代器,否则返回end(); s.find(); empty() O(1)O(1)O(1) 查看当前容器是否为空 s.empty()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STL重磅推荐
1.UNORDERED_MAPUNORDERED\_MAPUNORDERED_MAP容器
推荐理由
mapmapmap容器中方法的时间复杂度为O(logn)O(log_n)O(logn ),而unordered_mapunordered\_mapunordered_map的则是O(1)O(1)O(1).
容器底层逻辑
快速的哈希(快速的映射 时间复杂度为O(1)O(1)O(1)).
2.BITSETBITSETBITSET容器
bitset<N> c;
bitset<n>b(s);