T [N]和std :: array <t,n>之间的差异

时间:2018-04-25 09:37:13

标签: c++ arrays c++11

我的问题很简单,但更具体地说,我想引用Stroustrup11中的2行。

  1. T[N]固定大小的内置数组:N个连续的T类元素; 没有size()或其他成员函数
  2. array<T,N> T类型的N个连续元素的固定大小数组; 像内置数组一样,但解决了大部分问题
  3. 那么作者提到的区别是什么?以及std::array<T,N>解决了哪些问题?

2 个答案:

答案 0 :(得分:4)

主要区别在于std::array<T, N> 没有衰减到指向第一个元素的指针,T[N]可以, std::array<T, N>的值副本。

std::array还提供了一些有用的功能,例如词典比较运算符。

但是因为N必须是编译时可评估的常量表达式,std::vector<T>通常是首选。

答案 1 :(得分:2)

与内置数组不同,std::array个对象可以作为函数参数进行复制和传递。

重载的运算符和成员函数可以提供额外的调试和运行时检查,并消除大量代码重复。标准成员集简化了通用代码中std::array个对象的使用。