新闻中心

C++如何使用迭代器_C++ STL容器遍历器(Iterator)的基本用法

2025-11-19
浏览次数:
返回列表
迭代器是C++ STL中用于统一访问容器元素的对象,支持begin()和end()遍历,可应用于vector、list、map等容器,结合auto和范围for循环提升代码安全与简洁性。

c++如何使用迭代器_c++ stl容器遍历器(iterator)的基本用法

在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改签提前车次规则 

搜索