第一部分 :
std::initializer_list
是 C++11 的一个非常有用的特性,所以我想知道它是如何在标准库中实现的。从我在这里读到的内容,编译器创建了一个类型数组T
并将指针指向initializer_list<T>
.
它还指出,复制一个initializer_list
将创建一个引用相同数据的新对象:为什么会这样?我会猜到它要么:
- 复制新的数据
initializer_list
- 将数据的所有权转移到新的
initializer_list
第二部分 :
来自构造函数的众多在线参考资料之一std::vector
:
vector (initializer_list<value_type> il,
const allocator_type& alloc = allocator_type());
(6) 初始化列表构造函数
以相同的顺序构造一个容器,其中包含il中每个元素的副本。
我对移动语义还不满意,但是不能将数据il
移动到vector
? 我不知道std::vector
IIRC 的深度实现,但它使用普通的旧数组。