0

0

怎样使用C++11的范围for循环 现代遍历容器的最佳实践

P粉602998670

P粉602998670

发布时间:2025-06-29 10:08:01

|

540人浏览过

|

来源于php中文网

原创

c++++11引入的范围for循环提供了一种简洁安全的遍历容器方式。它通过简化迭代器操作,使代码更清晰易读;基本语法为for (declaration : range),其中declaration是接收元素的变量,range是要遍历的容器如vector、map等;例如遍历vector时可直接使用int num : nums输出每个元素;若需修改原数据则应使用引用形式int& num : nums;使用时需注意避免不必要的拷贝、不在遍历中修改容器结构,并确保类型支持begin()和end()函数;常见应用场景包括遍历线性容器、访问键值对、处理字符串字符及数组等;例如遍历map时使用const auto& pair可避免复制键值对并提升效率。掌握此特性有助于编写更现代高效的c++代码。

怎样使用C++11的范围for循环 现代遍历容器的最佳实践

在C++11中引入的范围for循环(range-based for loop)是一种简洁又安全的遍历容器方式。它简化了传统for循环中繁琐的迭代器操作,成为现代C++代码中推荐使用的做法。

怎样使用C++11的范围for循环 现代遍历容器的最佳实践

基本语法与使用方式

范围for循环的基本写法是:

怎样使用C++11的范围for循环 现代遍历容器的最佳实践
for (declaration : range)
    statement;

其中declaration是你声明的变量,用于接收每次迭代的元素;range则是你要遍历的对象,比如数组、vector、map等容器。

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

例如,遍历一个vector可以这样写:

怎样使用C++11的范围for循环 现代遍历容器的最佳实践
std::vector nums = {1, 2, 3, 4, 5};
for (int num : nums) {
    std::cout << num << " ";
}

这段代码会依次输出vector中的每个元素。

如果你希望修改容器中的元素,可以使用引用形式:

for (int& num : nums) {
    num *= 2;
}

这样就可以直接对原数据进行操作,而不会生成副本。

使用注意事项和建议

虽然范围for循环用起来方便,但有几个细节需要注意:

Red Panda AI
Red Panda AI

AI文本生成图像

下载
  • 避免不必要的拷贝:如果遍历的是复杂对象(如字符串或自定义类),最好使用引用:

    for (const std::string& str : vec)
  • 不要在遍历过程中修改容器结构:比如添加或删除元素,这可能导致未定义行为。

  • 适用于支持begin()和end()的类型:包括标准库容器、内置数组、初始化列表等。你也可以为自定义类型实现这两个函数来支持范围for循环。

常见应用场景

范围for循环适合几乎所有只关心“逐个访问元素”的场景。以下是一些常见用途:

  • 遍历vector、list、deque等线性容器
  • 访问map或unordered_map的键值对
  • 处理字符串字符
  • 遍历数组(包括C风格数组)

例如遍历map:

std::map ages = {{"Alice", 30}, {"Bob", 25}};
for (const auto& pair : ages) {
    std::cout << pair.first << ": " << pair.second << "\n";
}

这里用auto&自动推导出pair类型,并避免复制整个键值对。

如果你想更进一步,还可以结合lambda表达式和算法一起使用,但那是另一个话题了。

基本上就这些。掌握好范围for循环的用法,能让你的C++代码更清晰、更现代。

相关专题

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

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

519

2023.09.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

248

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

205

2023.09.04

java基础知识汇总
java基础知识汇总

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

1435

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

609

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

547

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

539

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

157

2025.07.29

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

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

2

2025.12.31

热门下载

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

精品课程

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

共1课时 | 0.1万人学习

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

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

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

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