传统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. bcompiler php,php_bcompiler.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  2. Simple File System
  3. 【四种解法】剑指 Offer 39. 数组中出现次数超过一半的数字
  4. 深入跨国互联网业务场景,看华为云数智融合元数据如何打破“数据墙”
  5. python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...
  6. ofstream的使用方法
  7. 相机模型与标定(四)--opencv单目标定例子使用说明
  8. matlab 贝塞尔曲线,matlab实现贝塞尔曲线绘图pdf查看
  9. 【习题 8-10 UVA - 1614】Hell on the Markets
  10. android kill process,为什么Application有时会在killProcess上重启?
  11. python二元函数图像在线绘制_使用python绘制二元函数图像的实例
  12. ckeditor使用技巧总结
  13. Android架构学习之路三-MVX
  14. 浅析ERP系统--质量
  15. Wifi4更换Wifi6路由器的使用体验
  16. 如何截取电影画面转换成gif动图做微信表情包
  17. 超级计算机 天河三号,中国新一代百亿亿次超算“天河三号”问世!再创世界纪录...
  18. FFT(快速博立叶变换)
  19. Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize
  20. 一个python开发者的修炼之路

热门文章

  1. Laravel debugbar 开发调试使用
  2. 国内课题基金英文翻译
  3. Linux应急处置/信息搜集/漏洞检测工具---附脚本下载
  4. 阿里云安全科学家吴翰清入选MIT TR35_你知道弹性安全网络技术吗?
  5. 电磁诱导透明matlab程序,一种实现类电磁诱导透明效应的超材料及方法与流程
  6. 读书笔记——阿里数据中台(第二篇:OneData体系1)
  7. Ubuntu18.04 分屏显示问题解决
  8. 数仓 DW层中主题表之页面交互事件概况主题(分享,点赞,收藏)
  9. 微信小程序登录方法,授权登录及获取微信用户手机号
  10. 企业宣传片可以通过哪些途径进行宣传