0

0

c++中迭代器iterator怎么用_c++迭代器iterator使用方法详解

尼克

尼克

发布时间:2025-09-27 11:31:01

|

615人浏览过

|

来源于php中文网

原创

迭代器是C++中用于遍历容器元素的机制,类似于指针,支持统一访问不同容器。1. 常见类型包括正向、双向和随机访问迭代器,分别适用于不同容器;2. 通过begin()和end()获取迭代范围,使用*it解引用,++it移动位置;3. const_iterator用于只读访问,reverse_iterator实现反向遍历;4. 迭代器操作包括比较、算术运算(如it+n)和元素修改;5. 避免解引用end()或使用失效迭代器,防止运行时错误。掌握迭代器可提升STL容器操作效率与代码清晰度。

c++中迭代器iterator怎么用_c++迭代器iterator使用方法详解

迭代器(iterator)是C++中用于遍历容器元素的一种机制,它类似于指针,可以指向容器中的某个元素,并通过递增或递减操作访问下一个或上一个元素。使用迭代器可以统一不同容器的访问方式,使代码更通用、更灵活。

迭代器的基本概念

迭代器本质上是一个对象,它指向容器中的元素。不同的容器提供不同类型的迭代器,比如vector、list、set等都支持迭代器。通过迭代器,可以读取、修改元素,也可以进行遍历操作。

常见的迭代器类型有:

  • 正向迭代器(forward iterator):只能向前移动
  • 双向迭代器(bidirectional iterator):可前后移动,如list、set
  • 随机访问迭代器(random access iterator):支持跳跃式访问,如vector、deque

基本用法示例

以vector为例,展示如何定义和使用迭代器:

立即学习C++免费学习笔记(深入)”;

#include 
#include 
using namespace std;

int main() { vector nums = {10, 20, 30, 40, 50};

// 定义迭代器
vectorzuojiankuohaophpcnintyoujiankuohaophpcn::iterator it;

// 遍历输出
for (it = nums.begin(); it != nums.end(); ++it) {
    cout zuojiankuohaophpcnzuojiankuohaophpcn *it zuojiankuohaophpcnzuojiankuohaophpcn " ";
}
cout zuojiankuohaophpcnzuojiankuohaophpcn endl;

return 0;

}

说明:

红墨
红墨

一站式小红书图文生成器

下载
  • begin() 返回指向第一个元素的迭代器
  • end() 返回指向最后一个元素后位置的迭代器(不指向有效元素)
  • *it 解引用操作,获取当前指向的元素值
  • ++it 将迭代器移动到下一个位置

const_iterator 和反向迭代器

如果容器是只读的,推荐使用 const_iterator:

vector::const_iterator cit;
for (cit = nums.cbegin(); cit != nums.cend(); ++cit) {
    cout << *cit << " ";
}

反向遍历可用 reverse_iterator:

vector::reverse_iterator rit;
for (rit = nums.rbegin(); rit != nums.rend(); ++rit) {
    cout << *rit << " ";
}

rbegin() 指向最后一个元素,rend() 指向第一个元素前的位置。

迭代器的常见操作

迭代器支持多种操作,具体取决于其类型:

  • *it:解引用,获取元素
  • it++ / ++it:移动到下一个位置
  • it-- / --it:前移(仅双向和随机访问)
  • it + n / it - n:跳跃n步(仅随机访问)
  • it1 == it2 / it1 != it2:判断是否指向同一位置
  • *it = value:修改元素值(非const迭代器)

例如,在vector中可以跳着访问:

vector::iterator it = nums.begin();
cout << *(it + 2) << endl; // 输出第3个元素:30

基本上就这些。掌握迭代器的使用,能让你更高效地操作STL容器,写出更清晰的遍历代码。注意不要对end()迭代器解引用,也不要使用已失效的迭代器,避免运行时错误。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

519

2023.09.20

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

319

2023.10.09

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

370

2023.10.16

asp连接access数据库的方法
asp连接access数据库的方法

连接的方法:1、使用ADO连接数据库;2、使用DSN连接数据库;3、使用连接字符串连接数据库。想了解更详细的asp连接access数据库的方法,可以阅读本专题下面的文章。

119

2023.10.18

access和trunk端口的区别
access和trunk端口的区别

access和trunk端口的区别是Access端口用于连接终端设备,提供单个VLAN的接入,而Trunk端口用于连接交换机之间,提供多个VLAN的传输;Access端口只传输属于指定VLAN的数据,而Trunk端口可以传输多个VLAN的数据,并使用VLAN标签进行区分。想了解更多access和trunk端口相关内容,可以阅读本专题下面的文章。

314

2023.10.31

access怎么导入数据
access怎么导入数据

access导入数据步骤:1. 选择数据源 2. 选择要导入的文件 3. 指定导入选项 4. 选择导入目标 5. 预览数据 6. 导入数据即可。想了解更多access的相关内容,可以阅读本专题下面的文章。

410

2024.04.10

access数据库用途
access数据库用途

access数据库是一种关系型数据库管理系统,主要用途包括:数据存储和管理;数据查询和检索;报告和表单设计;应用程序开发。想了解更多access数据库的相关内容,可以阅读本专题下面的文章。

558

2024.04.10

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

1

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.2万人学习

10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号