对于array的初始化我们可以使用列表初始化:

array<int, 8> test = {1,2,3,4,5,6,7,8
};

但是当我们不再使用简单的内置类型array时:

array<pair<int, int>, 8> dirs = {{-1, -1},{-1, 0},{-1, 1},{0, -1},{0, 1},{1, -1},{1, 0},{1, 1},
};

编译器就会报错:No viable conversion from 'int' to 'std::pair<int, int>'
但是如果使用双层大括号,就像这样:

array<pair<int, int>, 8> dirs = {{{-1, -1},{-1, 0},{-1, 1},{0, -1},{0, 1},{1, -1},{1, 0},{1, 1},
}};

编译器就不会报错,是不是很神奇。
经过在网上查阅资料,看到stackoverflow上一个人解释说,array的原型是结构体中的数组:

template<typename T, int size>
struct std::array
{T a[size];
};

因此,产生了需要双大括号的问题:最外面的大括号是给结构体初始化用的,里面的大括号是给数组初始化用的。
但是标准中并没有提到这一点,因此这个可能是编译器的bug

C++ array初始化需要双层大括号相关推荐

  1. 构造函数的初始化,初始化列表还是大括号里好,那种效率高

    complex (double r = 0, double i = 0): re (r), im (i) { } : re (r), im (i)  初始化列表   放在大括号中实现  re和im的初 ...

  2. python中关于np.array初始化不同维度矩阵的有趣现象

    做机器学习实验K-means时,我想把每个聚类(cluster)当成每个元素放入np.array中,而每个聚类是一个矩阵,矩阵的行数是该类样本点的个数,矩阵的列数是每一个样本点的特征数(即维度). 我 ...

  3. 大括号之谜:C++的列表初始化语法解析

    转载: https://segmentfault.com/a/1190000039362151 摘要:有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时,编译通不过. 有朋友 ...

  4. C语言 —— 数组(数组的声明、初始化、访问)与字符串指针

    1.什么是数组 若将有限个类型相同的变量的集合命名,那么这个名称为数组名. 数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式. [1]  这些无序排列的同类数 ...

  5. C语言 一维数组、二维数组的创初始化、使用和存储

    目录 数组 一维数组 一维数组的创建和初始化 一维数组的定义 一维数组的初始化 完全初始化 不完全初始化 一维数组的使用 一维数组的使用代码示例 一维数组在内存中的存储 代码示例 二维数组 二维数组的 ...

  6. java中Array和ArrayList区别

    2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...

  7. Array and ArrayList

    1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([]):最高效:但是其容量固定且无法动态改变:      ArrayList: ...

  8. python中的array函数作用_Python中的Array | 数组2(简介和功能)

    相关文章:Python中的数组Array | 1(简介和功能) 以下是更多函数. 1. typecode:此函数返回初始化数组所用的数据类型. 2. itemsize:此函数返回单个数组元素的大小(以 ...

  9. C++中数组定义及初始化

    一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...

最新文章

  1. aligned_storage简单学习
  2. python三步实现人脸识别
  3. python 爬虫输出为空,python爬取文件时,内容为空
  4. Leetcode 739. 每日温度 (每日一题 20211014)
  5. android默认获取敏感权限
  6. Dreamweaver中如何格式化代码
  7. windows平台oracle自动job,oracle删除oem中自动备份job
  8. linux用户管理相关
  9. requestLayout() improperly called by android.widget.GridView{43cefbd VFED.VC.. .F...... 0,0-2190,319
  10. 什么是SDK什么是CDN
  11. 如何提高学习欲--奖励机制
  12. 【物联网】LoRa vs NBIoT
  13. 搭建代理服务器获取大量IP
  14. 手把手教你写Android项目文档,醍醐灌顶!
  15. 支付宝 福卡 出花花卡 敬业福 的 福图片
  16. 虚拟机中CentOS 7安装过程
  17. 2021-2027全球及中国电外科手术钳行业研究及十四五规划分析报告
  18. [车联网安全自学篇] ATTACK安全之检测 Android APN 代理
  19. 话题 | 雾计算和边缘计算有什么区别?
  20. Spring Boot spring.factories 用法及原理

热门文章

  1. centos 6.9 NTP基准时间服务器配置
  2. 简单阐述下OC中UIImage三种创建方式~~~
  3. 小试---EF5.0入门实例1
  4. Android 网络状态的监控
  5. 前台用js、jquery出现错误很多是由于IE缓存
  6. 2021年兰州师大附中高考成绩查询,2021年兰州重点高中名单及排名,兰州高中高考成绩排名榜...
  7. mysql表级别的操作_MySql 库/表级操作 及 数据类型 - 纪宇
  8. java的方法是什么用,Java中的本机方法是什么?它们应该在何处使用?
  9. java stack list_JAVA自己实现List接口Stack
  10. oracle系统库名,Oracle 札记之 一:数据库名,数据库实例名,数据库域名,操作系统环境变量...