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
英文地址,請注明出處:http://en.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…