0

0

c++中的迭代器iterator是什么_c++迭代器使用方法

下次还敢

下次还敢

发布时间:2025-10-06 20:31:02

|

563人浏览过

|

来源于php中文网

原创

迭代器是C++ STL中用于访问容器元素的“智能指针”,支持解引用、自增、比较等操作,提供统一的遍历方式。不同容器支持不同类型迭代器(如随机访问、双向等)。以vector为例,begin()/end()返回迭代器,结合循环可遍历元素;C++11起可用auto简化声明,或使用范围for循环。cbegin()/cend()返回常量迭代器,保证只读访问;rbegin()/rend()支持逆序遍历。需注意迭代器失效问题,如vector插入可能导致内存重分配,使原有迭代器失效,引发未定义行为。正确使用迭代器是掌握STL的关键。

c++中的迭代器iterator是什么_c++迭代器使用方法

迭代器(iterator)在C++中是一种用于访问容器元素的对象,它的行为类似于指针。通过迭代器,你可以遍历容器(如数组、vector、list、map等)中的元素,而不需要关心容器的内部实现细节。它为不同类型的容器提供了一致的访问方式,是STL(标准模板库)的核心组成部分之一。

迭代器的基本概念

可以把迭代器理解为指向容器中某个元素的“智能指针”。它支持以下操作:

  • *it:解引用,获取当前指向的元素值
  • ++it 或 it++:移动到下一个元素
  • it == other_it:判断两个迭代器是否指向同一位置
  • it != other_it:判断是否不相等

不同的容器支持不同类型的迭代器(如输入、输出、前向、双向、随机访问),功能和限制也有所不同。

常见容器的迭代器使用方法

以std::vector为例说明基本用法:

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

#include 
#include 

int main() {
    std::vector vec = {1, 2, 3, 4, 5};

    // 定义迭代器并遍历
    for (std::vector::iterator it = vec.begin(); it != vec.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:1 2 3 4 5

其中,begin() 返回指向第一个元素的迭代器,end() 返回指向最后一个元素后一个位置的迭代器(即末尾标记)。

C++11起还支持更简洁的写法:

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
}

甚至可以使用范围for循环(底层仍依赖迭代器):

灵云AI开放平台
灵云AI开放平台

灵云AI开放平台

下载
for (const auto& value : vec) {
    std::cout << value << " ";
}

常量迭代器与反向迭代器

如果不想修改容器内容,应使用常量迭代器:

std::vector::const_iterator cit = vec.cbegin();
while (cit != vec.cend()) {
    std::cout << *cit << " ";
    ++cit;
}

cbegin()cend() 确保返回的是 const 迭代器。

若需要逆序遍历,可使用反向迭代器:

for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
    std::cout << *rit << " ";
}

输出为:5 4 3 2 1

迭代器失效问题

在使用迭代器时要注意“迭代器失效”问题。例如,在vector中插入或删除元素可能导致原有迭代器失效:

std::vector v = {1, 2, 3};
auto it = v.begin();
v.push_back(4); // 可能导致内存重分配,it 失效!
*it; // 危险:未定义行为

因此,在修改容器后应避免使用旧的迭代器,或根据操作规则重新获取有效迭代器。

基本上就这些。掌握迭代器的使用,是理解和运用STL的关键一步。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1463

2023.10.24

c语言const用法
c语言const用法

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

521

2023.09.20

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

74

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

28

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

59

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

35

2025.11.27

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

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

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

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

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