iterator 的小东西

被C++的迭代器给坑了2个小时

不得不立文警告自己

C++的iterator 对于不同的STL来说 有不同的操作 小小的总结一下

(1)所有迭代器
p++ 后置自增迭代器
++p 前置自增迭代器
(2)输入迭代器
*p 复引用迭代器,作为右值
p=p1 将一个迭代器赋给另一个迭代器
p==p1 比较迭代器的相等性
p!=p1 比较迭代器的不等性
(3)输出迭代器
*p 复引用迭代器,作为左值
p=p1 将一个迭代器赋给另一个迭代器
(4)正向迭代器
提供输入输出迭代器的所有功能
(5)双向迭代器
–p 前置自减迭代器
p– 后置自减迭代器
(6)随机迭代器
p+=i 将迭代器递增i位
p-=i 将迭代器递减i位
p+i 在p位加i位后的迭代器
p-i 在p位减i位后的迭代器
p[i] 返回p位元素偏离i位的元素引用
p < p1 如果迭代器p的位置在p1前,返回true,否则返回false
p <= p1 p的位置在p1的前面或同一位置时返回true,否则返回false
p>p1 如果迭代器p的位置在p1后,返回true,否则返回false
p>=p1 p的位置在p1的后面或同一位置时返回true,否则返回false

其中对于我们比较常用的STL 的迭代器中

list set map 的迭代器 为 双向迭代器

vector string deque 为的迭代器 随机迭代器

queue stack 不支持迭代器

输入输出迭代器分别前置一个 istream_ ostream_

另外加了 cost 的迭代器和字面意思一样 不得访问其他数据