stl:standard template library ==> vector,map等均为类模板(class template)而不是类
vector
container:
iterator:vector和string提供随机访问迭代器,其他stl不提供随机访问迭代器
- 随机访问迭代器支持iterator+constant 其他迭代器不支持iterator+constant
- 均支持it++和*it

公共的东西:
- 默认创建,拷贝创建,=,默认析构函数(big three)
- 状态:empty(), size()
- swap可交换绝大多数stl(好像除了不可交换string)(这里的swap可能是stl自带的方法)
- 常提供的方法:插入insert 删除erase clear 查找find
1. string & vector
string
- string::npos(no position):unsigned int,值为-1或者4294967295
创建:
- 默认构造
- 拷贝构造:string s(“hello”)
- string s(int n, char c)
赋值:
- =
- assign —-> s[i] = …更为简单
运算:+ += > < >= <=
遍历:
访问:s[i]
操作:
- substr
- substr(pos, len)
- substr(len)
- insert
- erase clear
- find replace
- find(str2) find(str2, pos)
状态:empty() size()
vector:vector的动态拓展是开一块新的空间,然后将原有数据拷贝进去,而不是直接增加一块区域从而进行拓展
创建:默认构造,拷贝构造
- vector
v(v0.begin(),v0.end()-1) - vector
v(n, elem) : n个elem,初始化后从而能够进行随机访问- vector
v(elem):elem个elem
- vector
赋值:
- =
- v.assign(begin, end) —-> v[i] = … 更为简单
- v.assign(n, elem) —-> v[i] = … 更为简单
遍历:
访问:v[i]
操作:
- push_back pop_back
- insert
- erase clear
- 没有提供find方法
状态:empty(), size()
2. set & map
set:自动排序,吸收重复元素(集合)
multiset:自动排序,可以有重复元素
创建:默认构造,拷贝构造
赋值:= swap(s1,s2)
遍历:
操作:
- insert
- erase clear
- find
状态:empty(), size()
pair:对组
创建:默认构造,拷贝构造
更常用的构造方式
pair
赋值:=
运算:== != < > <= >=,先比first,再比second
操作:
- it->first, it->second
map:按key自动排序,字典(哈希表),吸收重复元素
multimap:按key自动排序,字典,可以有重复元素
创建:默认构造,拷贝构造
赋值:= swap(m1,m2)
遍历:
操作:
- insert
- erase clear
- find
状态:empty(), size()
unordered_map

3. stack & queue
stack
创建:默认构造,拷贝构造
赋值:=
遍历:for(auto(stack
操作:
- push(),pop()
- top()
状态:empty(),size()
queue
创建:默认构造,拷贝构造
赋值:=
遍历:
操作:
- push(),pop()
- front(),back()
状态:empty(), size()
