C++ STL迭代器完全指南:从新手到高手的奇幻之旅

embedded/2025/2/9 12:33:14/

一、迭代器:数据世界的万能遥控器 🎮

1.1 为什么需要迭代器?

想象你有一个装满玩具的箱子(容器),你想:

  • 🚗 逐个查看所有玩具(遍历)
  • 🧸 找到特定的玩具熊(查找)
  • ✨ 把玩具按大小排列(排序)

如果每个箱子的打开方式都不同(数组用下标、链表要指针、文件流特殊操作),你会疯掉的!迭代器就是解决这个问题的万能遥控器,它让所有容器都有了统一的操作接口!

vector<int> vec{1,2,3};
list<string> lst{"A","B","C"};
set<double> s{3.14, 2.718};auto vec_it = vec.begin(); // 获取向量遥控器
auto lst_it = lst.begin(); // 获取链表遥控器
auto s_it = s.begin();     // 获取集合遥控器

二、迭代器五大神兽(类型全解析) 🦄

2.1 神兽能力评级表

迭代器类型超能力代表容器特色招式
输入迭代器单向前进,只读一次istream读取流数据
输出迭代器单向前进,只写一次ostream写入流数据
前向迭代器多次前向移动forward_list单链表遍历
双向迭代器自由进退list/map/set逆向操作
随机访问任意跳跃vector/string[]运算符、+=n

2.2 神兽使用说明书

(1) 随机访问迭代器(最强王者)
vector<int> vip{10,20,30,40,50};
auto remote = vip.begin();cout << remote[3];    // 直接跳转到第4个位置 → 40
remote += 2;          // 前进2步
cout << *remote;      // 30
advance(remote, -1);  // 后退1步 → 20
(2) 双向迭代器(优雅舞者)
list<string> dance{"探戈","华尔兹","恰恰"}

http://www.ppmy.cn/embedded/160814.html

相关文章

UdpServer

Udp服务端&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Diagnostics; using System.IO; using …

【生成模型之十四】Visual Autoregressive Modeling

论文&#xff1a;Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction code&#xff1a;GitHub - FoundationVision/VAR: [NeurIPS 2024 Best Paper][GPT beats diffusion&#x1f525;] [scaling laws in visual generation&#x1f4c8;]…

C# 比较两个List集合内容是否相同

在 C# 中&#xff0c;要比较两个 List<T> 集合的内容是否相同&#xff0c;可以通过以下几种方法&#xff1a; 一、非自定义类的元素比较 1. 使用 SequenceEqual 方法&#xff08;顺序和内容都相等&#xff09; 顺序和内容都相等&#xff1a;使用 SequenceEqual。 usin…

go结构体和json相互转换、序列化和反序列化

json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下&#xff1a; { "a": "Hello", "b": "Worl…

工业 4G 路由器助力消防领域,守卫生命安全防线

在消防领域也在不断引入新技术以提升消防安全保障能力发展过程中。工业 4G 路由器为其数据传输、预警监控发挥着重要的通信作用。 工业 4G 路由器通过内置的 4G 模块&#xff0c;接入 4G 网络&#xff0c;将网络信号进行转换和分发。它能够适应复杂的工业环境&#xff0c;具备…

A new release of pip is available: 24.2 -> 25.0

您可以使用官方提供的 get-pip.py 脚本来安装或升级pip。 1&#xff0c;下载 get-pip.py 脚本&#xff1a; curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2&#xff0c;运行脚本以安装或升级pip&#xff1a; python get-pip.py 3&#xff0c;实际运行效果

Kotlin 2.1.0 入门教程(十)

if 表达式 if 是一个表达式&#xff0c;它会返回一个值。 不存在三元运算符&#xff08;condition ? then : else&#xff09;&#xff0c;因为 if 在这种场景下完全可以胜任。 var max aif (a < b) max bif (a > b) {max a } else {max b }max if (a > b) a…

C# 修改项目类型 应用程序程序改类库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…