About the reverse_iterator

2024-06-20 05:48
文章标签 reverse iterator

本文主要是介绍About the reverse_iterator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

reverse_iterator: 反向迭代器
A copy of the original iterator (the base iterator) is kept internally and used to reflect the operations performed on the reverse_iterator: whenever the reverse_iterator is incremented, its base iterator is decreased, and vice versa. A copy of the base iterator with the current state can be obtained at any time by calling member base.

Notice however that when an iterator is reversed, the reversed version does not point to the same element in the range, but to the one preceding it. This is so, in order to arrange for the past-the-end element of a range: An iterator pointing to a past-the-end element in a range, when reversed, is pointing to the last element (not past it) of the range (this would be the first element of the reversed range). And if an iterator to the first element in a range is reversed, the reversed iterator points to the element before the first element (this would be the past-the-end element of the reversed range).

简单说就是,如果用一个正常iterator去初始化reverse_iterator, 结果就是指向base iterator的前一个。或者你也可以直接指定rbegin() 或者rend().

直接使用:

// vector::rbegin/rend
#include <iostream>
#include <vector>int main ()
{std::vector<int> myvector (5);  // 5 default-constructed intsint i=0;std::vector<int>::reverse_iterator rit = myvector.rbegin();for (; rit!= myvector.rend(); ++rit)*rit = ++i;std::cout << "myvector contains:";for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}

output是:
myvector contains: 5 4 3 2 1

或者就是更严格的来定义reverse_iterator,for example:

// reverse_iterator example
#include <iostream>     // std::cout
#include <iterator>     // std::reverse_iterator
#include <vector>       // std::vectorint main () {std::vector<int> myvector;for (int i=0; i<10; i++) myvector.push_back(i);typedef std::vector<int>::iterator iter_type;// ? 0 1 2 3 4 5 6 7 8 9 ?iter_type from (myvector.begin());                     //   ^//         ------>iter_type until (myvector.end());                      //                       ^//std::reverse_iterator<iter_type> rev_until (from);     // ^//         <------std::reverse_iterator<iter_type> rev_from (until);     //                     ^std::cout << "myvector:";while (rev_from != rev_until)std::cout << ' ' << *rev_from++;std::cout << '\n';return 0;
}

output is:
myvector: 9 8 7 6 5 4 3 2 1 0

这篇关于About the reverse_iterator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077276

相关文章

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

leetcode#541. Reverse String II

题目 Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of

[LeetCode] 7. Reverse Integer

题:https://leetcode.com/problems/reverse-integer/description/ 题目 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123Output: 321Example 2:Input: -123Output: -321Ex

[LeetCode] 190. Reverse Bits

题:https://leetcode.com/problems/reverse-bits/ 题目大意 将32位的数,二进制翻转。 解题思路 解法和 将int a =123,翻转的思路 相同。 int b= 0;while(a>0){b = b*10 + a %10;a /=10;} 将新数整体左移一位,然后 取每个数的第i位置,将该位放到 新数的最低位。循环32次遍可以得到翻转。

Simulink代码生成: For Iterator子系统及其代码

本文研究Simulink中的For Iterator子系统及其生成的代码。 文章目录 1 Simulink中的For Iterator子系统2 For Iterator子系统建模示例3 For Iterator子系统的代码4 总结 1 Simulink中的For Iterator子系统 不管是在C语言还是Matlab脚本编程的时候,都避免不了使用for循环来反复执行某一段代码。在

Enumeration 接口与 Iterator 接口的区别

Enumeration 接口与 Iterator 接口的区别 1、功能1.1 Enumeration1.2 Iterator 2、安全性和并发性3、总结 💖The Begin💖点点关注,收藏不迷路💖 Enumeration和Iterator是用于遍历集合的两个接口,但它们之间存在一些显著的区别。 1、功能 1.1 Enumeration 提供基本的遍历功能

Iterator和ListIterator比较

在使用java集合的时候,很多情况都能用到Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢? 下面我们详细分析。 这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示: 这里假设集合List由四个元素List1、List2、List

Iterator接口的简单用法

Iterator迭代接口是专门用来进行迭代输出的接口,定义如下: public interface Iterator<E>{ } Iterator 接口提供的常用方法如下: 序号常用方法说明1public boolean hasNext()判断集合是否有下一个元素2pulbic E next()取出当前元素3public void remove()删除当前元素 Iterator 接

《python语言程序设计》第8章第11题将反向字符串 编写一个函数反向一个字符串,reverse(s)

def reverse(text_arrange):len_text = len(text_arrange)dec_text = ""for i in range(1, len_text + 1):# print(i)dec_text += text_arrange[-i]print(f"反向输出{dec_text}")reverse("12345678")reverse("abcdefg

java篇 常用工具类 0x03:Iterator 与 Iterable 接口

文章目录 Iterator 接口Iterable 接口手动实现 Iterable 接口示例 Iterator 接口 Iterator 接口在 java.util 包中。实现了 Iterator 接口的类就可以支持遍历操作。 public interface Iterator<E> {// 只需要关注到这两个抽象方法boolean hasNext(); // 还有没有