上海企业网站制作服务,wordpress 充值插件,郑州代理记账网站建设,WordPress数据库添加管理员文章目录 1. 使用范围for循环2. 使用普通for循环2.1 使用指针2.2 使用数组下标 类型别名的简化 本文来自于《C primer》的练习3.43-3.45#xff0c;觉得多维数组的遍历有不同的实现方式#xff0c;于是记录一下。写的可能没有按题目的顺序来。题目大概含义是定义了一个二维数… 文章目录 1. 使用范围for循环2. 使用普通for循环2.1 使用指针2.2 使用数组下标 类型别名的简化 本文来自于《C primer》的练习3.43-3.45觉得多维数组的遍历有不同的实现方式于是记录一下。写的可能没有按题目的顺序来。题目大概含义是定义了一个二维数组的元素要求按照行列打印出来用不同的方式。 初始代码
#include iostream
#include iterator
using namespace std;
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};\*write your code*\
}输出结果 1. 使用范围for循环
这里使用auto关键字
#include iostream
#include iterator
using namespace std;
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (auto p : a){for (auto q : p)cout q ;cout endl;}
}p和q的类型是什么 auto p ↔ \leftrightarrow ↔ int (p)[4] 代表一个引用引用对象是整型的长度为4的数组 auto q ↔ \leftrightarrow ↔ int (q) 代表一个引用引用对象是整型 上面的代换可以直接代入代码中。 2. 使用普通for循环
2.1 使用指针
使用指针有两种方式
一种方式是直接进行指针操作
#include iostream
#include iterator
using namespace std;
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (auto p a; p ! a 3; p){for (auto q *p; q ! *p 4; q)cout *q ;cout endl;}
}另一种方式是使用标准库函数begin和end得到数组的头元素指针和尾后元素指针数组最后一个元素后一个位置的指针
#include iostream
#include iterator
using namespace std;
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (auto p begin(a); p ! end(a); p){for (auto q begin(*p); q ! end(*p); q)cout *q ;cout endl;}
}p和q的类型是什么 auto p ↔ \leftrightarrow ↔ int (*p)[4] 代表一个指针指向的对象是整型的长度为4的数组 auto q ↔ \leftrightarrow ↔ int (*q) 代表一个指针指向的对象是整型 2.2 使用数组下标
#include iostream
#include iterator
using namespace std;
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (size_t i 0; i ! 3; i){for (size_t j 0; j ! 4; j)cout a[i][j] ;cout endl;}
}上面的p对应的类型是int[4]长度是4的整型数组我们可以使用类型别名简化。
类型别名的简化
这里以指针为例引用也是一样的
第一种写法用的是using关键字
#include iostream
#include iterator
using namespace std;
using int_array int[4];
// typedef int int_array[4];
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (int_array *p a; p ! a 3; p){for (int *q *p; q ! *p 4; q)cout *q ;cout endl;}
}另一种写法是使用typedef关键字
#include iostream
#include iterator
using namespace std;
typedef int int_array[4];
int main()
{int a[3][4] {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};for (int_array *p a; p ! a 3; p){for (int *q *p; q ! *p 4; q)cout *q ;cout endl;}
}参考
《C primer》112-116