C++之多维数组
来源:互联网 发布:招行一金通软件下载 编辑:程序博客网 时间:2024/06/14 07:56
通常所说的多维数组其实是数组的数组。
当一个数组的元素仍是数组时,通常使用两个维度来定义它:一个维度表示数组本身的大小,另一个维度表示其元素(也是数组)的大小:
int ia[3][4];//大小为3个数组,每个元素是含4个整数的数组
- 多维数组的初始化
允许使用花括号括起来的一组值初始化多维数组。
int ia[3][4] = {//三个元素,每个元素都是大小为4的数组 {0,1,2,3}//第1行的初始值 {4,5,6,7}//第2行的初始值 {,8,9,10,11}//第3行的初始值};
其中内层嵌套的花括号并非必需的:
//没有每行的花括号,与之前的初始化语句是等价的int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
//显示地初始化每行的首元素int ia[3][4] = {{0},{4},{8}};
//显示地初始化第一行,其他元素执行值初始化int ix[3][4] = {0,3,6,9};
- 多维数组的下标引用
//程序中经常会用到两层嵌套的for循环来处理多维数组的元素constexpr size_t rowCnt = 3,colCnt = 4;int ia[rowCnt][colCnt];//对于每一行for(size_t i = 0;i != rowCnt;++i){ //对于每一列 for(size_t j = 0;j !=colCnt;++j) { //将元素的位置索引作为它的值 ia[i][j] = i * colCnt + j; }}
- 使用范围for循环
前一个程序可以简化为如下形式;
size_t cnt = 0;for (auto &row : ia) for(auto &col : row) { col = cnt; ++cnt; }
要使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。
- 指针和多维数组
应为多维数组实际上是数组的数组,所以多维数组名转换的指针实际上是指向第一个内层数组的指针。
int ia[3][4];int (*p)[4] = ia;//p指向含有4个整数的数组p = &ia[2];//p指向ia的尾元素
随着C++11新标准的提出,通过使用auto 或者decltype就能尽可能的避免在数组前面加上一个指针类型。
//输出ia中的每个元素,每个内层数组各占一行for (auto p = begine(ia);p != end(ia);++p){ for (auto q = begine(*p);q != end(*p);++q) cout << *q << ''; cout << endl;}
阅读全文
0 0
- c++primer之多维数组
- C语言入门教程之八多维数组
- C多维数组
- c.传递多维数组
- C语言----多维数组
- 多维数组转一维数组(C)
- C++之多维数组
- C程序设计基础之多维数组的指针变量
- C程序设计基础之多维数组的指针变量
- C语言入门之多维数组的指针变量
- C语言之多维数组简单题目练习
- ioS开发之c语言基础-多维数组,字符串
- C语言之对多维数组的简易理解
- C语言与多维数组
- C语言中的多维数组
- C语言中的多维数组
- C语言中的多维数组
- C 指针和多维数组
- 爬取京东商品详情页信息
- (九)Redux:Provider的实现
- 杭电acm1196 对0 ,1的界定控制输出
- 在cmd命令行使用sqlplus时的页面显示问题
- dup2重定向后的恢复
- C++之多维数组
- (六)Redux:带有删除线的列表_实例
- 算法分析之桶排序
- 剑指Offer面试题43n个骰子的点数(动态规划),面试题44扑克牌的顺子
- (七)Redux:为List增加过滤功能_实例
- HDU 6049 Sdjpx Is Happy 贪心 区间DP 从简单的情况着手思考
- linux下使用gtest框架进行c/c++单元测试
- (八)Redux:提取Component
- H5 学习笔记1