C++ array初始化需要双层大括号
对于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初始化需要双层大括号相关推荐
- 构造函数的初始化,初始化列表还是大括号里好,那种效率高
complex (double r = 0, double i = 0): re (r), im (i) { } : re (r), im (i) 初始化列表 放在大括号中实现 re和im的初 ...
- python中关于np.array初始化不同维度矩阵的有趣现象
做机器学习实验K-means时,我想把每个聚类(cluster)当成每个元素放入np.array中,而每个聚类是一个矩阵,矩阵的行数是该类样本点的个数,矩阵的列数是每一个样本点的特征数(即维度). 我 ...
- 大括号之谜:C++的列表初始化语法解析
转载: https://segmentfault.com/a/1190000039362151 摘要:有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时,编译通不过. 有朋友 ...
- C语言 —— 数组(数组的声明、初始化、访问)与字符串指针
1.什么是数组 若将有限个类型相同的变量的集合命名,那么这个名称为数组名. 数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式. [1] 这些无序排列的同类数 ...
- C语言 一维数组、二维数组的创初始化、使用和存储
目录 数组 一维数组 一维数组的创建和初始化 一维数组的定义 一维数组的初始化 完全初始化 不完全初始化 一维数组的使用 一维数组的使用代码示例 一维数组在内存中的存储 代码示例 二维数组 二维数组的 ...
- java中Array和ArrayList区别
2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...
- Array and ArrayList
1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([]):最高效:但是其容量固定且无法动态改变: ArrayList: ...
- python中的array函数作用_Python中的Array | 数组2(简介和功能)
相关文章:Python中的数组Array | 1(简介和功能) 以下是更多函数. 1. typecode:此函数返回初始化数组所用的数据类型. 2. itemsize:此函数返回单个数组元素的大小(以 ...
- C++中数组定义及初始化
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
最新文章
- aligned_storage简单学习
- python三步实现人脸识别
- python 爬虫输出为空,python爬取文件时,内容为空
- Leetcode 739. 每日温度 (每日一题 20211014)
- android默认获取敏感权限
- Dreamweaver中如何格式化代码
- windows平台oracle自动job,oracle删除oem中自动备份job
- linux用户管理相关
- requestLayout() improperly called by android.widget.GridView{43cefbd VFED.VC.. .F...... 0,0-2190,319
- 什么是SDK什么是CDN
- 如何提高学习欲--奖励机制
- 【物联网】LoRa vs NBIoT
- 搭建代理服务器获取大量IP
- 手把手教你写Android项目文档,醍醐灌顶!
- 支付宝 福卡 出花花卡 敬业福 的 福图片
- 虚拟机中CentOS 7安装过程
- 2021-2027全球及中国电外科手术钳行业研究及十四五规划分析报告
- [车联网安全自学篇] ATTACK安全之检测 Android APN 代理
- 话题 | 雾计算和边缘计算有什么区别?
- Spring Boot spring.factories 用法及原理
热门文章
- centos 6.9 NTP基准时间服务器配置
- 简单阐述下OC中UIImage三种创建方式~~~
- 小试---EF5.0入门实例1
- Android 网络状态的监控
- 前台用js、jquery出现错误很多是由于IE缓存
- 2021年兰州师大附中高考成绩查询,2021年兰州重点高中名单及排名,兰州高中高考成绩排名榜...
- mysql表级别的操作_MySql 库/表级操作 及 数据类型 - 纪宇
- java的方法是什么用,Java中的本机方法是什么?它们应该在何处使用?
- java stack list_JAVA自己实现List接口Stack
- oracle系统库名,Oracle 札记之 一:数据库名,数据库实例名,数据库域名,操作系统环境变量...