C++中C++11数组初始化方法

C++中C++11数组初始化方法

C++11将使用大括号的初始化(列表初始化)作为一种通用初始化方式,可用于所有类型。数组以前就可使用列表初始化,但C++11中的列表初始化新增了一些功能。

首先,初始化数组时,可省略等号(=):

double earnings[4]{1.2e4,1.6e4,1.1e4,1.7e4};// okay with c++11

其次,可不在大括号内包含任何东西,这将把所有元素都设置为零:

unsigned int counts[10]=};//all elements set to 0
float balances[100]};//allelements set to 0

第三,列表初始化禁止缩窄转换,这在第3章介绍过:

long plifs[]={25,92,3.0};// not allowed
char slifs[4]{'h','i',1122011,0'};// not allowed
char tlifs[4]{'h',i',112,0'};// allowed

在上述代码中,第一条语句不能通过编译,因为将浮点数转换为整型是缩窄操作,即使浮点数的小数点后面为零。第二条语句也不能通过编译,因为1122011超出了char变量的取值范围(这里假设char 变量的长度为8位)。第三条语句可通过编译,因为虽然112是一个int值,但它在char 变量的取值范围内。
C++标准模板库(STL)提供了一种数组替代品–模板类 vector,而 C++11 新增了模板类 array.这些替代品比内置复合类型数组更复杂、更灵活,本章将简要地讨论它们,而第16章将更详细地讨论它们。

对C++感兴趣的朋友点这里:C/C++课程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值