一、迭代器类型 等价 泛型指针
01 输入迭代器
02 输出 迭代器
03 正向迭代器
04 双向迭代器
05 随机访问迭代器
查找算法需要迭代器定义++运算符,同时她要求可以读取数据,不要求写数据
排序算法需要迭代器定义+ n运算符,从而实现随机访问,同时需要支持写数据
以上迭代器都支持的运算
解引用 *iterator
等于运算符 iter1 == iter2
不等运算符 iter1 != iter2
下面为迭代器的私有特征
输入迭代器(输入设备):
支持iter++ /++iter运算,这个运算保证可以迭代器可以向后单向访问
输出迭代器(输出设备):
支持iter++ /++iter运算,但是只能通过解引用进行修改操作,不能解引用进行读操作
正向迭代器:
支持iter++ /++iter运算,但是可以反复读写,并且保证读写数据一致
双向迭代器:
支持iter++ /++iter iter-- /–iter运算,这种迭代器适用于双向数据结构
随机访问迭代器:
她支持双向迭代器所有的操作之外,同时支持一下操作
a+n
n+a
a -n
r+=n
r-=n
a[n]
b-a
a < b
a > b
a >= b
a <= b
二、算法
算法基于模板实现其通用性,常见的算法如下
sort
copy
find
random_shuffle
set_union
set_intersection
set_difference
transform
STL 将算法库分为4组:
a非修改式序列操作
这些操作不修改容器的内容,例如find for_each
b修改式序列操作
可以对区间的每个元素进行修改操作。可以修改值,也可以值的排列顺序
例如 transform random_shuffle copy
c排序和相关操作
例如 sort
d通用数字运算
计算区间的内容累积,乘积等
前三者包含在algorithm
后者包含在 numberic
三、算法与迭代器
sort : 排序算法,要求随机访问迭代器, 只是修改参数值。 区间[first,last)
find: 查找算法,要求正向迭代器 区间 [first,last)
random_shuffle:排序算法,随机访问迭代器 区间 [first,last)
for_each:正向迭代器 区间 [first,last)
copy:把数据从一个容器拷贝到另一个容器。正向迭代器 区间[first,last)