《C++ Primer》读书笔记-第三章 06 多维数组

来源:互联网 发布:淘宝u站天天特价 编辑:程序博客网 时间:2024/06/10 08:36
作者:马志峰
链接:https://zhuanlan.zhihu.com/p/23579860
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

多维数组其实就是数组的数组

int ia[3][4];

由内向外读:ia是含有3个元素的数组,它的每个元素都是含有4个整数的数组

初始化

int ia[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };

本质上和一维数组的初始化没有区别,ia有3个元素,所以外层花括号里面有3个花括号,每个花括号分别用来初始化ia的一个元素

和一维数组一样,也可以只给出一部分初始值

int ix[3][4] = { {0}, {4}, {8} };  int ia[3][4] = { 0 3 6 9 };

下标

ia[2][3] 返回ia第二个元素(数组)的第三个元素

ia[1] 返回ia的第一个元素(数组)

注意理解多维数组其实就是数组的数组就可以了

范围for

可以使用for循环和范围for来遍历多维数组

在使用范围for时,最好将控制变量都声明为引用类型

size_t cnt = 0;  for( auto &row : ia )  {      for( auto &col : row )      {          col = cnt;          ++cnt;      }  }

如果不声明为引用类型

for( auto row : ia )      for( auto col : row )

第一行取ia的每个元素,是数组类型,会被编译器转换为指向首元素的指针,第二行就会报错

因此,只有最内层的循环可以不使用引用类型

简单起见,最好都使用引用类型

指针和多维数组

多维数组的数组名也会自动转换为指针

int ia[3][4];  auto p = ia;

理解过程:

  1. ia是一个含有3个元素的数组
  2. 它的每个元素都是含有4个元素的数组。
  3. 因此,它的首元素也是含有4个元素的数组
  4. 指向首元素的指针就是指向含有4个元素的数组的指针

等价于

int (*p)[4] = ia;

遍历每个元素

for( auto p = ia; p != ia + 3; ++p )  {      for( auto q = *p; q != *p + 4; ++ q )      {          cout << *q << ' ';       }      cout << endl;  }

对p解引用可得到含有4个元素的数组,*p是指向它的首元素的指针

也可以使用begin和end函数

for( auto p = begin(ia); p != end(ia); ++p )  {      for( auto q = begin(*p); q != end(*p); ++ q )      {          cout << *q << ' ';       }      cout << endl;  }

使用类型别名简化书写

using int_array = int[4];  typedef int int_array[4];

别忘了,typedef的形式和变量声明类似

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿的鞋有味道怎么办 生完孩子血糖高怎么办 生了孩子子宫大怎么办 生完孩子阴吹怎么办 怀孕初期感冒嗓子发炎怎么办 脑子转不过来弯怎么办 他说我道行不深怎么办 鞋子内测磨破了怎么办 老公拉肚子拉的很厉害怎么办 老公拉肚子拉得很厉害怎么办 和老公吵架很厉害怎么办 新鞋鞋底吱吱响怎么办 新鞋鞋底滑了怎么办 工作中同事不配合怎么办 做体力活一身疼怎么办 大脑左则中动脉血管狭窄?怎么办 儿童体质差免疫力差怎么办 nba篮球大师体力不够怎么办 一千米差10秒怎么办 四十岁以后体力和耐力差怎么办 打篮球一打比赛就紧张怎么办 耐克空军鞋鞋底边胶掉了怎么办 鞋底踩到老鼠胶怎么办 头蒙怎么办最快最有效 备孕老公压力大怎么办 宝宝太兴奋不睡怎么办 我很烦只睡三小时觉怎么办才好 柯基精力太旺盛怎么办 孩子学习熬夜精力不足怎么办 肺癌晚期吃不下饭怎么办 这俩天吃药太多肝肾功能不好怎么办 跑步跑得头疼晕怎么办 吃完辣的想吐怎么办 体育生暑假训练太累怎么办 高强度运动后性功能不好怎么办 运动后第二天全身酸痛怎么办 运动后心慌想吐怎么办 激素停后全身疼怎么办 运动完头晕想吐怎么办 跑了步全身酸痛怎么办 运动后全身没力气怎么办