C++ 有插入迭代器、流迭代器、反向迭代器、移动迭代器,泛型算法结构有适用的迭代器类别:输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器。
再探迭代器
迭代器:
- 插入迭代器
- 流迭代器
- 反向迭代器
- 移动迭代器
插入迭代器
1 |
|
back_inserter
:push_back
的迭代器front_inserter
:push_front
的迭代器inserter
: 第二个参数指向给定容器的迭代器
流迭代器
1 |
|
1 |
|
可以为任何定义了输入运算符(»)的类型创建istream_iterator
对象,类似的(«)可以创建ostream_iterator
对象。
反向迭代器
rbegin
、rend
、crbegin
、crend
反向迭代器需要递减运算符
不可能从一个forward_list
或一个流迭代器创建反向迭代器。
泛型算法结构
迭代器类别:
- 输入迭代器:
==
!=
++
*
->
不保迭代器状态。 - 输出迭代器:
++
*
只能赋值一次。 - 前向迭代器:输入和输出迭代器的操作,多次读写,多遍扫描。
- 双向迭代器:前置和后置递减运算符(
--
)。 - 随机访问迭代器:常量时间访问序列,(
<
<=
>
>=
+
+=
-
-=
-
[]
)。
算法形参模式
1 |
|
- 一些算法使用重载形式传递一个谓词
- _if版本算法
- 区分拷贝元素的版本和不拷贝的版本
特定容器算法
链表类型list
和forward_list
定义了几个成员函数形式的算法:sort
merge
remove
reverse
unique
。
1 |
|
splice成员:
1 |
|