std :: dynarray vs std :: vector
 C ++ 14提供了std::dynarray : 
std :: dynarray是一个序列容器,它封装了在构造时固定的大小的数组,并且在对象的整个生命周期中不会改变。
  std::dynarray必须在运行时分配为std::vector 。 
 那么, std::dynarray的好处和用法是std::dynarray而我们可以使用更dynamic(也可重定义)的std::vector ? 
那么,当我们可以使用更dynamic的
std::vector(Re-sizable)的时候,std::dynarray有什么好处和用法呢?
  dynarray比vector更简单,因为它不需要pipe理单独的大小和容量值,也不需要存储分配器。 
 然而,主要的性能优势是来自这样的事实,即鼓励实现在可能的情况下在堆栈上分配dynarray ,避免任何堆分配。 例如 
 std::dynarray<int> d(5); // can use stack memory for elements auto p = new std::dynarray<int>(6); // must use heap memory for elements 
 这种优化需要编译器的配合,不能作为纯粹的库types来实现,必要的编译器魔法还没有实现,没有人确定它是多么的容易。 由于缺乏实现经验,在上周的芝加哥C ++委员会会议上,决定从C ++ 14中提取std::dynarray ,并发布一个单独的数组扩展TS(技术规范)文档来定义std::experimental::dynarray和运行时绑定数组(ARB,类似于C99的VLA)。这意味着std::dynarray几乎肯定不会在C ++ 14中。 
 正如你所说, std::dynarray是一个固定大小的dynamic数组。 它不可resize。 这大致上是对new T[N]和std::unique_ptr<T[]>(new T[N]) 。 
不需要resize或pipe理容量意味着您可以以更less的复杂性和更less的空间来实现数据结构。
 而且, std::dynarray是一个奇怪的动物,它允许实现以不同的,非特定的方式实现它,例如可以将数组放在堆栈上。 调用分配函数是“可选的”。 您可以指定一个分配器来构造数组的元素,但这不是该types的一部分。 
 你可能也想知道为什么我们需要std::dynarray 和可变长度的数组。  C ++ 14中的VLA限制性更强; 它们只能是本地的,自动variables,并且没有办法指定分配策略,当然它们没有标准的容器接口。 
“当前草案”(采用Googlecaching)的23.3.4.2中的一些示例:
explicit dynarray(size_type c);效果:分配
c元素的存储空间。 可能会或可能不会调用全球operator new。
template <class Alloc> dynarray(size_type c, const Alloc& alloc);效果:相当于前面的构造函数,只是每个元素都是用uses-allocator构造的 。
是否可以使用给定的分配器来构造数组元素是一个全局特性:
template struct uses_allocator,Alloc>:true_type {};
要求:
Alloc应该是Alloc者(17.6.3.5)。 [ 注意:这个特征的特化通知其他库组件,即使它没有嵌套allocator_type,dynarray也可以用分配器构造。]
编辑:乔纳森·沃克利的答案肯定会更具权威性和洞察力。