新闻中心
C++如何使用迭代器_C++ STL容器遍历器(Iterator)的基本用法
迭代器是C++ STL中用于统一访问容器元素的对象,支持begin()和end()遍历,可应用于vector、list、map等容器,结合auto和范围for循环提升代码安全与简洁性。

在C++中,迭代器(Iterator)是STL(标准模板库)中用于遍历容器元素的重要工具。它类似于指针,可以指向容器中的某个元素,并通过递增或递减来访问其他元素。使用迭代器可以统一不同容器的访问方式,提高代码的通用性和可维护性。
什么是迭代器
迭代器是一种对象,它允许程序员以相同的方式访问不同类型的STL容器(如 vector、list、set、map 等),而无需关心容器内部的具体实现。每个支持迭代器的容器都提供了以下两个关键成员函数:
- begin():返回指向容器第一个元素的迭代器
- end():返回指向容器“末尾之后”位置的迭代器(不指向有效元素)
通过从 begin() 到 end() 的遍历,可以访问容器中的所有元素。
常见容器的迭代器用法
下面展示几种常用STL容器中迭代器的基本使用方式。
1. 使用 vector 的迭代器vector 是动态数组,支持随机访问迭代器。
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
// 使用迭代器遍历
for (auto it = nums.begin(); it != nums.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
2. 使用 list 的迭代器
list 是双向链表,也支持双向迭代器。
#include <list>
#include <iostream>
using namespace std;
int main() {
list<string> words = {"hello", "world", "STL"};
for (auto it = words.begin(); it != words.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
3. 使用 map 的迭代器
map 是关联容器,存储键值对,迭代器指向 pair 类型元素。
小云雀
剪映出品的AI视频和图片创作助手
1949
查看详情
#include <map>
#include <iostream>
using namespace std;
int main() {
map<string, int> ages;
ages["Alice"] = 25;
ages["Bob"] = 30;
for (auto it = ages.begin(); it != ages.end(); ++it) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
const_iterator 与 auto 关键字
如果只是读取容器内容而不修改,建议使用 const_iterator 或 const auto& 来保证安全性。
- const_iterator:只能读取元素,不能修改
- auto:让编译器自动推导迭代器类型,减少书写错误
现代C++推荐写法:
// 推荐方式:简洁且安全
for (const auto& elem : container) {
cout << elem << " ";
}
// 或使用 auto it 遍历
for (auto it = container.begin(); it != container.end(); ++it) {
// ...
}
反向迭代器(reverse_iterator)
STL还提供反向迭代器,用于从后往前遍历。
- rbegin():指向最后一个元素
- rend():指向第一个元素前一个位置
示例:
vector<int> nums = {1, 2, 3, 4, 5};
for (auto rit = nums.rbegin(); rit != nums.rend(); ++rit) {
cout << *rit << " ";
}
// 输出:5 4 3 2 1
基本上就这些。掌握 begin/end
、auto 推导和范围 for 循环,就能高效使用C++迭代器。注意不要对 end() 迭代器解引用,也不要在遍历时随意插入/删除元素(除非使用支持的安全方法)。
以上就是C++如何使用迭代器_C++ STL容器遍历器(Iterator)的基本用法的详细内容,更多请关注其它相关文章!
# 内存管理
# 专业的整合营销推广公司
# 昆明网站推广优化公司
# 怎么做好营销推广员呢
# 绵竹网络营销推广
# 优化推广型网站
# 苏州好网站建设推荐
# 昆山网站优化推荐
# 秦皇岛淘宝网站建设好处
# 石龙企业全网营销推广
# 广州seo软件技术乐云seo品牌
# 就能
# 是一种
# 也不
# word
# 如何实现
# 第一个
# 键值
# 如何使用
# 遍历
# 迭代
# 键值对
# stream
# ios
# c++
# ai
# 工具
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
如何在Promise链中优雅地中断后续then执行
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
漫蛙2正版漫画站 漫蛙2网页版快速访问入口
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
必由学官方平台入口 必由学在线课堂登录地址
QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台
Golang如何测试channel通信行为_Golang channel通信测试与分析方法
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
C++指针和引用有什么区别_C++内存管理核心概念深度解析
c++ dfs和bfs代码 c++深度广度优先搜索算法
漫蛙漫画登录站点 漫蛙2正版漫画快速访问
痛风发作了怎么办? 快速止痛和后期饮食调理
如何有效阻止外部脚本意外修改内联样式的高度属性
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】
将HTML动态表格多行数据保存到Google Sheet的教程
海量存储:机器视觉智能化的核心基石
Tabulator表格中精确实现日期时间排序的指南
整合Supabase认证与Django模型:跨模式迁移的解决方案
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
天眼查企业查询官网入口 天眼查官方网页版查询
SteamMachine定价或为699美元 大家想入手吗?
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
必由学官方登录入口 必由学教师学生账号快速访问
小米汽车11月交付量突破40000台!雷军:将继续努力
HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制
抖音网页版快捷访问 抖音网页版网页版入口操作教程
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
Excel文件在线转换快速入口 Excel在线格式转换网站
快手赚钱渠道_快手收益来源
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比
《刺客信条:影》PS5 Pro和Switch 2画面对比
动漫花园资源网使用步骤_动漫花园资源网下载流程
J*a应用集成GitHub CLI与API认证指南
处理嵌套交互式控件:前端可访问性指南
win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
德邦快递查询平台 德邦快递物流信息查询入口
AO3网页版最新入口合集 Archive of Our Own在线访问指南
汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
outlook中文官网入口地址 outlook官方中文版直达首页链接
C#中解析不规范的HTML为XML 常见的坑与解决办法
Golang如何使用net/url解析URL_Golang URL解析与处理方法
如何在 Excel Online 和 Google 表格中更改日期格式
Lar*el DB::listen 事件中的查询执行时间单位解析
铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则


2025-11-19
浏览次数:次
返回列表