for(auto i : v)遍历容器元素
for(auto i: v)遍历容器元素
- 1. auto
- 2. auto&
- 3. const auto&
- 4. const auto
C++11
新增了一种循环:基于范围(range-based)的 for 循环。这简化了一种常见的循环任务:对数组(或容器类,如 vector 和 array)的每个元素执行相同的操作,如下例所示:
double prices[5] = {4.99, 10.99, 6.87, 6.47, 8.88};
for (double x : prices)std::cout << x << std::endl;
其中,xxx 最初表示数组 prices 的第一个元素。显示第一个元素后,不断执行循环,而 xxx 依次表示数组的其他元素。因此,该循环可以用来显示数组中的每个值。
要修改数组的元素,需要使用不同的循环变量语法:
for (double &x : prices)x = x * 0.80; //20% off sale
符号 &
表明 xxx 是一个引用变量,能让接下来的代码能够修改数组的内容,而第一种语法不能。
还可结合使用基于范围的 for 循环和初始化列表:
for (int x : {3, 5, 2, 8, 6})cout << x << " ";
cout << '\n';
这种方式可以引申至 C++11
的另一种新特性 auto,使用 auto 遍历容器的方式,有以下几种:
1. auto
auto 即 for(auto x: range) 这样会拷贝一份 range 元素,而不会改变 range 中元素;
2. auto&
当需要修改range中元素,用 for(auto& x: range);
3. const auto&
当只想读取 range 中元素时,使用 const auto&,如:for(const auto&x:range),它不会进行拷贝,也不会修改range;
4. const auto
当需要拷贝元素,但不可修改拷贝出来的值时,使用 for(const auto x:range),避免拷贝开销。
示例:
#include<iostream>
#include<vector>
using namespace std;
int main() {int a[] = { 1,2,3,5,2,0 };vector<int>counts(a,a+6);for (auto count : counts)cout<< count<< " ";cout << endl;return 0;
}
//输出:1 2 3 5 2 0
for(auto i : v)遍历容器元素相关推荐
- for(auto x: v)遍历里面的坑
对STL容器,可以用for(auto x: v)来很方便的遍历.比如 #include<iostream> #include<vector>using namespace st ...
- 容器删除元素后迭代器失效_使用迭代器遍历容器元素
迭代器为我们提供了统一的遍历容器的方式. 1.Iterator源码分析 public Iterator<E> iterator() {return new Itr(); }private ...
- C++ STL容器元素正确删除
一.容器与迭代器 1.1 STL容器 容器是用来管理一大群元素的,为了适应不同需要,STL提供了不同的容器. 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的 ...
- php 回调递归,PHP数组函数 array_walk_recursive (使用回调函数递归遍历数组元素)
在PHP中,数组函数 array_walk_recursive () 使用回调函数递归遍历数组元素. 函数语法:array_walk_recursive ( array &$array , c ...
- 老话题,不要在遍历容器中增删容器数据
代码如下 TellMeLabel::TellMeLabel(FontAtlas *atlas /* = nullptr */, TextHAlignment hAlignment /* = TextH ...
- STL中用erase()方法遍历删除元素
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...
- 035_使用Enumeration遍历Vector元素
import java.util.Enumeration; import java.util.Vector;/*** 使用Enumeration遍历Vector元素*/ public class Ve ...
- 1.10 Iterator(迭代器)遍历集合元素
Iterator(迭代器)遍历Collection集合元素 Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Ma ...
- QT学习笔记(九):遍历容器-迭代器(iterators)
QT学习笔记(九):遍历容器-迭代器(iterators) 遍历容器 : 1.Jave风格: 2.STL风格: 3.foreach 关键字: 遍历容器 : 遍历一个容器可以使用迭代器(iterator ...
最新文章
- WPF命中测试示例(二)——几何区域命中测试
- JavaScript知识精简
- std::map只修改不用加锁
- Codeforces 167B Wizards and Huge Prize(概率dp)
- 训练自己haar-like特征分类器并识别物体(1)
- 十 Java集合框架(2):Set接口
- 计算机联网实验步骤,计算机网络技术实验操作过程.doc
- 第二版全新博客园win phone 客户端
- 使用gitkraken来push的流程
- IntelliJ IDEA scala的源码设置
- C/C++获取二维数组行列数
- VisualSVN安装图解
- 经典机器学习系列(二)【线性判别分析LDA】
- 【转】项目代码风格要求
- 请假时碰到法定假期,实际请假几天?
- [转]“新欢乐时光”病毒源代码分析
- 微信小程序给公众号发送模板消息
- 零基础如何学习视频制作?超全干货!手把手教你好上手的视频制作技巧
- 经典之打印沙漏-数学分析-C/C++
- AUTOCAD——永久关闭栅格