既然有了 std::vector,那 std::array 的意义在哪里?

发布时间:
2024-09-13 12:12
阅读量:
4

对,你已经提到了,vector 的数据放在堆上,而一般 array 和 C 数组一样,数据放栈上,这是这两者的主要区别。

至于 array 和 C 数组的区别,则在于下面几点:

  • array 不像 C 数组一样会自动退化成元素指针,而是允许值传参(非引用方式)并保留大小
  • array 支持正常的赋值操作
  • array 自动支持同类型的比较操作
  • array 支持容器共有的 begin、end 等成员函数
  • ……

总之,array 在兼容了 C 数组的一般用法和性能特点的同时,还去除了 C 数组的一些怪异之处,行为上更规则,表现得像普通对象(容器)。因此,它可以替换 C 数组的大部分使用场景。

END