c++ vector用花括号初始化的原理

c++ vector有个很神奇的初始化方法:

vector<int> a = {1, 2, 3, 4, 5};

这种方法让我感到很是惊奇,这是什么操作?
我知道初始化数组是这样写的,但是vector虽然是类似于数组,但是本身是个类,是要用构造函数初始化的,也不是什么原生数据类型啊,花括号初始化是什么操作?

然后,我就去看了看vector的源码,模板给我看的好烦,算了,百度去。
百度查了查,发现一篇文章讲的比较清晰,主要是用了initializer_list。C++如何实现用大括号初始化vector - 简书

真是神奇啊,直接在编译器层面支持了,不过在VS2010和2012上,对这种初始化方法貌似支持效果还不太好,不能用花括号初始化vector。

posted @ 2021-08-20 17:20  王冰冰  阅读(1044)  评论(0编辑  收藏  举报