STL学习
STL
成员函数
通用:
begin:首个元素的迭代器
end:最后一个后面的
rbegin:最后一个
rend:第一个前面的
erase:删除几个
clear:删除所有
顺序容器特有
front:第一个元素的引用
back:最后一个元素的引用
push_back:末位增加新元素
pop_back:删除容器末位的元素
erase:删除迭代器指向的元素
迭代器
<容器类名>::iterator <变量名>//定义
<容器类名>::const_iterator <变量名>//常量迭代器
<容器类名>::reverse_iterator <变量名>//反向迭代器
*迭代器变量名//访问
随机访问迭代器:vector,deque
双向迭代器:list,set/multiset,map/multimap
sort(),binary_search()等函数需要借助随机访问迭代器运行
List
成员函数:
push_front:前面插入
pop_front:删除前面
sort:排序(不支持STL算法中的sort())
remove:删除和指定值相等的所有元素
unique:删除所有和前一个元素相同的元素(完全实现需要先sort)
merge:合并两个链表并清空被合并的那个
reverse:颠倒链表
splice:在指定位置前面插入另一个链表中的一个或多个元素,并在另一链表中删除被插入的元素
//*Eg lst1.splice(p1,lst2,p2,p3):将[p2,p3)插入p1前,并从lst2中删除[p2,p3)
Vector
用法示例:
vector v(a1,a1+10) //用a[0]到a[9]初始化v
vector v1(4,10) //v1[0]到v1[3]的值都为10
a=v.end()-v.begin() //a=5
PrintVector(v.begin(),v.end()) //输出v[0]到v[9]
v.insert(v.begin()+2,13) //在begin()+2的位置插入13
v.erase(v.begin()+2) //删除begin()+2位置的元素
v1.insert(v1.begin(),v.begin()+1,v.begin()+3) //将v中[begin+1,begin+3)的元素插入v2开头
v.erase(v.begin()+1,v.begin()+3) //删除v中[begin+1,begin+3)区间的元素
其他
-
find(first,last,) //在[first,last)中查找值为val的元素,查找成功返回迭代器目标位置,查找失败返回last迭代器 -
关联容器内部的元素是从大到小排列的
-
算法使用的区间都呈现 [ ) 前闭后开