首页 > 其他分享 >for遍历

for遍历

时间:2023-10-14 14:13:03浏览次数:29  
标签:arr 遍历 cout auto iter vector

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

注意事项:

1.不要在循环内部去修改容器,会导致程序崩溃

vector<int> s = {0,1,2,3,4,5,6,7,8,9};
for(auto n : s)
{
	cout<<n;
    s.push_back(1);
}

在循环内修改函数,导致迭代器失效,程序报错,报错如下

image-20231014134056290

2.如果不是一个容器,而是一个函数,该函数只会被调用一次

3.注意容器自身性质的影响,比如stack就无法直接用auto遍历整个容器

标签:arr,遍历,cout,auto,iter,vector
From: https://www.cnblogs.com/csclixuan/p/17764103.html

相关文章

  • burpsuite靶场----目录遍历----00截断(后缀名限制)
    burpsuite靶场----目录遍历----00截断(后缀名限制)靶场地址https://portswigger.net/web-security/file-path-traversal/lab-validate-file-extension-null-byte-bypass正式开始1.随便打开一个图片2.00截断原理:url框默认会进行一次url解码,%00会被解码为null,在从左向右......
  • burpsuite靶场----目录遍历----斜杠双重url编码绕过
    burpsuite靶场----目录遍历----斜杠双重url编码绕过靶场地址https://portswigger.net/web-security/file-path-traversal/lab-superfluous-url-decode正式开始1.随便打开一个图片2.对'/'进行双重url编码,即为%252f,然后访问..%252f..%252f..%252fetc/passwd3.在bp中可以查......
  • burpsuite靶场----目录遍历----复写绕过
    burpsuite靶场----目录遍历----复写绕过靶场地址https://portswigger.net/web-security/file-path-traversal/lab-sequences-stripped-non-recursively正式开始1.查看图片2.测试./../../../etc/passwd和/etc/passwd都失败了猜测是过滤了'../'采用复写绕过....//....//..........
  • burpsuite靶场----目录遍历----无防御
    burpsuite靶场----目录遍历----无防御靶场地址https://portswigger.net/web-security/file-path-traversal/lab-simple正式开始1.随便打开一个图像2.在filename处可以filename=./../../../../etc/passwd3.然后可以通过bp看到目录遍历的内容......
  • burpsuite靶场----目录遍历----绝对路径
    burpsuite靶场----目录遍历----绝对路径靶场地址https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass正式开始1.随便打开一个图片2.然后filename先尝试./../../../../etc/passwd不行然后再尝试/etc/passed成功......
  • python学习笔记3 遍历目录, 列出文件名
    importosdeflistDir(curPath,pixLen):list=[]#print("当前路径:"+curPath)files=os.listdir(curPath)forpathinfiles:fullPath=os.path.join(curPath,path)ifos.path.isfile(fullPath):#append......
  • 二叉树遍历
    packagecom.exe4.offer;importjava.util.Stack;/***前序、中序、后序遍历方法*@authorWGS**/publicclassBianliOfBinarryTree{publicstaticclassTreeNode{intval=0;TreeNodeleft=null;TreeNoderight=null;......
  • 我汤姆回来了(树和图的深度优先遍历(树的重心))(10/11)
    #include<iostream>#include<cstring>usingnamespacestd;constintN=100010;constintM=N*2;//可能多次节点重复,所以开大intn;inte[M],ne[M],h[N],idx=0;boolst[N];intans=N;//记录最后最小值答案//单链表的连接,不同点就是头结点有多个voidadd(i......
  • 10.10树的遍历
    publicclassMain{publicstaticvoidmain(String[]args){trees<Integer>t=newtrees<>(1);trees<Integer>t1=newtrees<>(2);trees<Integer>t2=newtrees<>(3);trees<Integer>t3=ne......
  • jquery获取radio选中值及遍历
    在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项:<inputtype="radio"name="testradio"value="jquery获取radio的值"/><inputtype="radio"name="testradio"value="jquery获取checkbox的值&quo......