有size和capacity的容器,size指已经有值的数据大小,而capacity是T* data被allocator分配的空间大小。
常识可以知道size以外capacity以内的部分不具有已知值,被分配,未零初始化。
左值是指针类型时,赋值只能改指针的指向;左值是常规类型时,出现了无谓的零初始化,这个方法被描述为placement new。
可以用new(ptr) T(args)的方法,也可以用allocator,但是allocator在不同cpp版本上差别很大。
std::uninitialized_xxx实现了将对象操作到未初始化的空间的功能,可以看作是能在左值对象还不存在时的赋值等操作。可以避免无谓的零初始化。

comment 评论区
star_outline 咱快来抢个沙发吧!