C++ STL Iterator 迭代器

Iterator 迭代器

Iterator(迭代器)模式又称 Cursor(游标)模式,用于提供一种方法顺序访问一个
聚合对象中各个元素, 而又不需暴露该对象的内部表示。

Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道
对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚合对象中的各
个元素。

能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来;

重载了 *,++,==,!=,= 运算符。用以操作复杂的数据结构

容器提供迭代器,算法使用迭代器;

STL 迭代器主要分为以下几类:

输入迭代器(Input Iterators):只能向前移动,每次只能读取一次元素。
            | 操作       | 说明                                         | 示例代码                                                     |
            |------------|----------------------------------------------|--------------------------------------------------------------|
            | `*it`      | 解引用迭代器,获取其指向的元素。             | `std::istream_iterator<int> input_iter(std::cin); int value = *input_iter;` |
            | `++it`     | 将迭代器向前移动一个位置。                   | `++input_iter;`                                              |
            |`it++`         | 将迭代器向前移动一个位置,并返回原位置。         | `input_iter++;`                                              |
            | `it1 == it2` | 比较两个输入迭代器是否相等。                 | `if (input_iter1 == input_iter2) { ... }`                    |
            | `it1 != it2` | 比较两个输入迭代器是否不相等。               | `if (input_iter1 != input_iter2) { ... }`                    |
            

输出迭代器(Output Iterators):只能向前移动,每次只能写入一次元素。
            
            | 操作       | 说明                                         | 示例代码                                                     |
            |------------|----------------------------------------------|--------------------------------------------------------------|
            | `*it = value` | 将值写入迭代器指向的位置。                | `std::ostream_iterator<int> output_iter(std::cout, " "); *output_iter = 42;` |
            | `++it`     | 将迭代器向前移动一个位置。传回新位置                 | `++output_iter;`                                             |
            |`it++`         | 将迭代器向前移动一个位置,并返回原位置。         | `output_iter++;`                                             |
            
前向迭代器(Forward Iterators):可以多次读写同一个元素,但只能向前移动。

            | 操作       | 说明                                         | 示例代码                                                     |
            |------------|----------------------------------------------|--------------------------------------------------------------|
            | `*it`      | 解引用迭代器,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值