传统for语句:

int a[8]={1,1,2,3,5,8,13,21};
    for (int i=0;i<8;i++) cout<<a[i];

一般形式:for (单次表达式;条件表达式;末尾循环体) {中间循环体;}

对条件已知递增为1的可用遍历形式: for ( int i:a) cout<<a[i];

这里的int i并非i是整型变量,而是a[]的类型,如它是一个string数组:

string b[3]={"a","ab","abc"};
    for (string i:b) cout<<i;

遍历for语句:

int a[8]={1,1,2,3,5,8,13,21};
    string b[3]={"a","ab","abc"};
    for (auto i:a) cout<<i;
    for (auto i:b) cout<<i;

引入关键字 auto 后,就不用管变量类型了,自动的。

嵌套for (auto)列印一个乘法口诀表:

#include <iostream>
#include <array>
using namespace std;
int main(void)
{int i=0;array<int,9>a,b;  //其实只要一个数组就能实现,见下一段代码for (auto&c:a) c=++i;for (auto&c:b) c=10-i--;for (auto c:a){for (auto d:b) if (c>=d) cout<<d<<"x"<<c<<"="<<c*d<<"\t";cout<<endl;}return 0;
}

输出结果:

1x1=1
1x2=2   2x2=4
1x3=3   2x3=6   3x3=9
1x4=4   2x4=8   3x4=12  4x4=16
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81--------------------------------
Process exited after 0.8755 seconds with return value 0
请按任意键继续. . .

vector容器也一样:

/* Written by Yang Cheng, 2021.1.29 */#include <iostream>
#include <vector>
using namespace std;
int main(void)
{int i=0;vector<int>a(9);for (auto&b:a) b=++i;for (auto b:a){for (auto c:a) if (b>=c) cout<<c<<"x"<<b<<"="<<b*c<<"\t";cout<<endl;}return 0;
}

二维数组的赋值和列印:

#include <iostream>
#include <iomanip>
using namespace std;int main(void)
{int arr[9][9];int i=0;for(auto &row:arr)for(auto &col:row)col=++i;for(auto &a:arr){for(auto b:a)cout<<setw(3)<<b;cout<<endl;}return 0;
}

输出结果:

E:\>test21  2  3  4  5  6  7  8  910 11 12 13 14 15 16 17 1819 20 21 22 23 24 25 26 2728 29 30 31 32 33 34 35 3637 38 39 40 41 42 43 44 4546 47 48 49 50 51 52 53 5455 56 57 58 59 60 61 62 6364 65 66 67 68 69 70 71 7273 74 75 76 77 78 79 80 81E:\>

迭代器iterator遍历:

#include <iostream>
#include <array>
using namespace std;int main(void)
{array<int,8>a={2,3,4,5,6,7,8,9};array<int,8>::iterator it=a.begin();  //声明一个迭代器for(;it<a.end();++it) cout<<*it<<" ";  //相当于指针,*it表示迭代器当前指向的元素cout<<endl;for(array<int,8>::iterator it=a.begin();it<a.end();++it) *it*=2; //所有元素倍增cout<<endl;              //也可以写成一行,此迭代器为循环体变量,与循环体外的it无关for(auto it=a.begin();it<a.end();++it) cout<<*it<<" ";  //建议用auto关键字声明cout<<endl;return 0;
}/*
运行结果:2 3 4 5 6 7 8 94 6 8 10 12 14 16 18--------------------------------
Process exited after 0.4409 seconds with return value 0
请按任意键继续. . .
*/

for_each() 遍历:

for_each()不像for (auto)是C++循环结构语句中的的一种形式。

std::for_each(.,.,.)  //只是用using namespace std; 省掉了std::

它通常被用于容器(或称向量类型)vector的遍历,要引用头文件:
#include <algorithm>

详情见以下代码:

#include <iostream>
#include <iomanip>
#include <string>
#include <regex>
#include <vector>using namespace std;void mycout(int n)
{cout<<setw(3)<<n;
}int ichange(int &n) //引用传递&n 否则实参不随形参变动
{n=n*2+1;return n;
}int main(void)
{int a[8]={1,1,2,3,5,8,13,21};for (auto i:a) mycout(i); //列印出数组a cout<<endl;int arraysize=sizeof(a)/sizeof(int);vector<int> b(a,a+arraysize); //把数组a所有元素的值赋给容器b的各元素for_each(b.begin(),b.end(),ichange); //调用函数改变容器b各元素的值 cout<<endl;for (auto i:b) cout<<setw(3)<<i; //列印出容器b cout<<endl;
}

输出结果:

E:\>test11  1  2  3  5  8 13 213  3  5  7 11 17 27 43E:\>

关于vector的说明:

1. vector:1.1 vector 说明vector是向量类型,可以容纳许多类型的数据,因此也被称为容器(可以理解为动态数组,是封装好了的类)
进行vector操作前应添加头文件#include <vector>1.2 vector初始化:方式1.//定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定
vector<int>a(10);方式2.//定义具有10个整型元素的向量,且给出的每个元素初值为1
vector<int>a(10,1);方式3.//用向量b给向量a赋值,a的值完全等价于b的值
vector<int>a(b);方式4.//将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型
vector<int>a(b.begin(),b.begin+3);方式5.//从数组中获得初值
int b[7]={1,2,3,4,5,6,7};
vector<int> a(b,b+7);1.3 vector对象的常用内置函数使用(举例说明)#include<vector>
vector<int> a,b;
//b为向量,将b的0-2个元素赋值给向量a
a.assign(b.begin(),b.begin()+3);
//a含有4个值为2的元素
a.assign(4,2);
//返回a的最后一个元素
a.back();
//返回a的第一个元素
a.front();
//返回a的第i元素,当且仅当a存在
a[i];
//清空a中的元素
a.clear();
//判断a是否为空,空则返回true,非空则返回false
a.empty();
//删除a向量的最后一个元素
a.pop_back();
//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);
//在a的最后一个向量后插入一个元素,其值为5
a.push_back(5);
//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);
//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);
//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);
//返回a中元素的个数
a.size();
//返回a在内存中总共可以容纳的元素个数
a.capacity();
//将a的现有元素个数调整至10个,多则删,少则补,其值随机
a.resize(10);
//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);
//将a的容量扩充至100,
a.reserve(100);
//b为向量,将a中的元素和b中的元素整体交换
a.swap(b);
//b为向量,向量的比较操作还有 != >= > <= <
a==b;2. 顺序访问vector的几种方式,举例说明2.1. 对向量a添加元素的几种方式1.向向量a中添加元素vector<int>a;
for(int i=0;i<10;++i){a.push_back(i);}2.从数组中选择元素向向量中添加int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=0;i<=4;++i){b.push_back(a[i]);}3.从现有向量中选择元素向向量中添加int a[6]={1,2,3,4,5,6};
vector<int>b;
vector<int>c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();++it)
{b.push_back(*it);
}4.从文件中读取元素向向量中添加ifstream in("data.txt");
vector<int>a;
for(int i;in>>i){a.push_back(i);}5.常见错误赋值方式vector<int>a;
for(int i=0;i<10;++i){a[i]=i;}//下标只能用来获取已经存在的元素2.2 从向量中读取元素1.通过下标方式获取int a[6]={1,2,3,4,5,6};
vector<int>b(a,a+4);
for(int i=0;i<=b.size()-1;++i){cout<<b[i]<<endl;}2.通过迭代器方式读取int a[6]={1,2,3,4,5,6};vector<int>b(a,a+4);for(vector<int>::iterator it=b.begin();it!=b.end();it++){cout<<*it<<"  ";}3.几个常用的算法#include<algorithm>//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
sort(a.begin(),a.end());//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
reverse(a.begin(),a.end());//把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素copy(a.begin(),a.end(),b.begin()+1);//在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
find(a.begin(),a.end(),10);

以上关于vector的说明引用自:https://blog.csdn.net/weixin_41743247/article/details/90635931

C++ 遍历循环语句 for(auto i:) 和 for_each()相关推荐

  1. 使用while循环语句与自增运算符循环遍历数组 (Java经典编程案例)

    大多情况下,遍历数组都是使用for循环语句实现.其实使用while循环语句与自增运算符循环 也能遍历数组,代码如下: /*** 使用while循环语句与自增运算符循环遍历数组*/ public cla ...

  2. 实现遍历数组(双for循环语句)

    遍历数组就是获得数组中的每一个元素 注:数组行和列都是从0开始计数 char arr[][]=new char[3][5];         arr[0]=new char[]{'春','眠','不' ...

  3. 浅谈PHP遍历数组之for循环语句

    数组是一个非常基础和重要的数据结构,当我们创建好一个数组后,就需要去操作它:而数组最常见的一个操作就是循环遍历.PHP中支持多种遍历数组的方法,今天我们就来学习如何利用for循环语句来遍历数组,下面来 ...

  4. python中if判断语句、while循环语句、for循环遍历、break 和continue作用

    一.判断语句 1.if条件判断语句单分支 注意:if和else后面需要加上一个冒号.if和else语句下面的一行需要默认空一个tab键 name = input('请输入您的用户名:') if nam ...

  5. R语言for循环语句编程:for循环遍历向量内容并修改向量内容

    R语言for循环语句编程:for循环遍历向量内容并修改向量内容 目录 R语言for循环语句编程:for循环遍历向量内容并修改向量内容

  6. go for 循环遍历数组并排序_Go语言基础教程:for循环语句

    一.程序的流程结构 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环结 ...

  7. flash遍历子元件_Flash编程-详解循环语句

    本文关键字:FLASH循环语句 在Flash的程序编制过程中,经常会出现一些重复语句需要在一起执行或者某些类似属性需要一气控制等情况.这时就需要利用循环控制语句来解决问题.本教程我将通过实例的方式给大 ...

  8. python循环语句打印三角形_如何使用python语言中的语句遍历循环生成三角形

    在python语言中,除了使用if语句,还可以使用while循环语句,利用多层循环生成不同的图形,如果在特殊位置中断,可以创建不同的图形.下面利用实例说明如何生成三角形,操作如下: 工具/原料 pyc ...

  9. matlab循环遍历数组_matlab循环语句for怎么用

    matlab循环语句for怎么用? matlab中for语句使用方法和应用实例 for循环语句 1.一般格式为: for x(循环变量) = array(数组) commands(执行的循环代码) e ...

最新文章

  1. 功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除
  2. 回归模型(regression model)有哪些指标?如何计算回归指标(regression metrics)?如何可视化他们?
  3. SAP WM中阶Storage Type的Capacity Check – Check based on maximum quantity per bin in storage type.
  4. 无偏方差为什么除以n-1
  5. css3 transform文字,CSS3 transform 字体模糊问题
  6. Dapper使用在WCF上总是说Service找不到
  7. 题目1439:Least Common Multiple
  8. 如何对散列查找进行asl分析计算?_Python数据结构与算法——散列(Hash)
  9. python 转doc为txt
  10. EndNote自定义引用格式和参考文献格式
  11. 我的 Java/C# web 后端开发技术选择
  12. 计算机教室简笔画图片大全集,教室场景画简笔画图片精选
  13. Python识别同构数
  14. 秦偲洺 荣获 火星少年计划 第三季 全球线上评选人气奖
  15. 飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08教程
  16. 原win7系统迁移到SSD固态硬盘
  17. 新闻学应该掌握哪些计算机技能,哪些人适合学新闻学专业 要掌握哪些技能
  18. 在一起计时器_没想到吧?快手竟然给厕所上安装了计时器,或许职场从此再无带薪拉屎...
  19. 【shell】scp 同时向多个主机拷贝数据
  20. 如何解决wup.exe文件占用cpu资源,彻底删除

热门文章

  1. python模拟登录爬虫 简书_python爬虫入门之模拟登陆新浪微博
  2. linux cacti监控tomcat,Cacti监控Tomcat服务器实现过程
  3. 在学生会时候做的一些活动背景logo
  4. 学术-符号-古代象征符号:衔尾蛇
  5. 华为ICT大赛-江西省省赛网络赛道-数通练习题
  6. 志宇-RabbitMQ学习
  7. 开关磁阻电机悬浮驱动IR2128小结
  8. 开关磁阻电机滑模控制仿真,电流斩波控制,直接转矩控制
  9. 怎样在每个视频中随机抽帧一帧图片出来
  10. C# 实现重启Windows系统