for遍历
for遍历
一:常规方式
1.遍历数组
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0;i<10;i++)
{
cout<<arr[i];
}
3.遍历容器类(迭代器)
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(vector<int>::iterator iter = s.begin();iter!=s.end();iter++)|
{
cout<<*iter;C
}
用vector::iterator iter建立一个指向第一个元素的迭代器,当迭代器没有指向最后一个元素时,就++
利用*iter去访问iter所指向的元素
二:利用C++11新特性
1.只查看值(auto n : arr)
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(auto n : arr)//自动获取元素的类型,当元素为空时,就结束循环
{
cout<<n;
}
vector<int> vec = {1,2,3,4,5,6,7,8,9,10};
for(auto n : vec)
{
cout<<n;
}
2.需要改变值(auto &n : arr)
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto &n :s)//将auto n修改为auto &n
{
cout<<++n;//可以对元素进行修改
}
案例:
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
cout<<"修改前";
for(auto &n : s)//利用&n
{
cout<<n++;//修改n
}
cout<<endl;
cout<<"修改后";
for(auto n : s)
{
cout<<n;
}
cout<<endl;
以上的代码输出为

注意事项:
1.不要在循环内部去修改容器,会导致程序崩溃
vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto n : s)
{
cout<<n;
s.push_back(1);
}
在循环内修改函数,导致迭代器失效,程序报错,报错如下

2.如果不是一个容器,而是一个函数,该函数只会被调用一次
3.注意容器自身性质的影响,比如stack就无法直接用auto遍历整个容器
for遍历的更多相关文章
- PHP中遍历XML之SimpleXML
简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...
- 邻接表的广度优先遍历(java版)
到 0 的权是 91 到 2 的权是 31 到 3 的权是 61 到 4 的权是 7 2 到 0 的权是 22 到 3 的权是 5 3 到 0 的权是 33 到 4 的权是 1 4 到 2 的权是 2 ...
- 邻接矩阵的深度优先遍历(java版)
这是一个有向边带权的图 顶点数组:[v0, v1, v2, v3, v4] 边数组: v0 v1 v2 v3 v4 v0 6 v1 9 3 v2 2 5 v3 1 v4 package com.dat ...
- 二叉树的创建和遍历(C版和java版)
以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- 遍历dynamic的方式
一.遍历ExpandoObject /// <summary> /// 遍历ExpandoObject /// </summary> [TestMethod] public v ...
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- Java 二叉树遍历右视图-LeetCode199
题目如下: 题目给出的例子不太好,容易让人误解成不断顺着右节点访问就好了,但是题目意思并不是这样. 换成通俗的意思:按层遍历二叉树,输出每层的最右端结点. 这就明白时一道二叉树层序遍历的问题,用一个队 ...
- 遍历map的四种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...
- 遍历datatable的方法汇总
遍历datatable的方法方法一: DataTable dt = dataSet.Tables[]; ; i < dt.Rows.Count ; i++) { string strName = ...
随机推荐
- rabbitmq安装部署和常用命令
python操作rabbitmq rabbitmq实现可以使用java或者springboot的封装方法,自己创建实现,也可以使用中间件实现,相对于自建,使用rabbitmq应用场景及使用更系统安全. ...
- 使用libswresample库实现音频重采样
一.初始化音频重采样器 在音频重采样时,用到的核心结构是SwrContext,我们可以通过swr_alloc()获取swr_ctx实例,然后通过av_opt_set_int()函数和av_opt_se ...
- 介绍Vue router的history模式以及如何配置history模式
引言 Vue router给我们提供了两种路由模式,分别是hash模式和history模式.其中默认是使用hash模式,即URL中带有一个#符号,但是处于业务或个人喜爱的差别,Vue router也提 ...
- Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能
总结/朱季谦 最近通过Vue + Element ui实现了动态表单功能,该功能还包括了动态表单新增行.删除行.动态表单验证.动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时, ...
- C++笔记(1)——类的基本概念知识
C#和C++的部分面向对象方式类似,只记录不同点. 定义类与关键字: 下面是C++类的定义方式与C++关键字public和private的表达方式: class Box { private: // 私 ...
- Kerberos、黄金票据与白银票据
kerberos Kerberos是一个网络认证协议,用于验证用户和服务之间的身份,解决分布式计算环境中的身份验证问题.它使用加密技术来提供安全的身份验证,并防止网络中的身份欺骗攻击.Kerberos ...
- Windows10 下 Neo4j1.5.8 安装教程
前言 Neo4j 是一个高性能的.NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中.基于磁盘的.具备完全的事务特性的 Java 持久化引擎,这里就不把他和常用关系型数据库做对比了.因为篇幅 ...
- Java 调用gdal API(二)——栅格裁剪
gdal可以说是GIS数据处理比较好的工具之一,虽然也提供了Java API,但是官方文档确实太过简单,用起来确实太难受,每次都需要去参考对应的C++api,然后在对应使用. 因此小编决定从这篇文章开 ...
- React:TypeError: Cannot read properties of undefined (reading 'map')
解决方案 js中?问号代表可选项 可选链式操作符 参考链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Oper ...
- 21.1 使用PEfile分析PE文件
PeFile模块是Python中一个强大的便携式第三方PE格式分析工具,用于解析和处理Windows可执行文件.该模块提供了一系列的API接口,使得用户可以通过Python脚本来读取和分析PE文件的结 ...