02~C++ 迭代器与算法总结

一、迭代器类型 等价 泛型指针
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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值