【C++ 11 新特性】统一的列表初始化、initializer_list 的使用

1. {}初始化

在这里插入图片描述

struct Point
{
	 int _x;
	 int _y;
};

int main()
{
	 int x1 = 1;
	 int x2{ 2 };
	 int array1[]{ 1, 2, 3, 4, 5 };
	 int array2[5]{ 0 };
	 Point p{ 1, 2 };
	 
	 // C++11中列表初始化也可以适用于new表达式中
	 int* pa = new int[4]{ 0 };
	 
	 return 0;
}


2. initializer_list 的介绍🖊

🍎① 使用initializer_list 的对象时必须加上头文件 #include <initializer_list>

🍎② initializer_list 的作用能够将一系列值传递给构造函数或者其他函数;下面这段函数采取值传递的方式对效率的影响不大。
在这里插入图片描述

// 如果没有 vector(initializer_list<T> il),我们要向下面一样写很多个构造函数。
vector(const T& x1)
vector(const T& x1, const T& x2)
vector(const T& x1, const T& x2, const T& x3)
vector(const T& x1, const T& x2, const T& x3, const T& x4)
 ...

🍎③ 所有的容器都支持 initializer_list的构造, 这里{"sort", "排序"} 会先初始化构造一个 pair 对象 map<string, string> dict = { {"sort", "排序"}, {"insert", "插入"} };

在这里插入图片描述


🍎④ initializer_list 有两个指针,一个指针指向 initializer_list的第一个元素,另一个指针指向最后一个元素的后一个位置。 在 32 位机器下sizeof ( il2 ) 为 8,64 位机器下为 16

在这里插入图片描述

在这里插入图片描述

  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来可期LJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值