【问题标题】:Does a raw array have any advantages over a std::array? [duplicate]原始数组比 std::array 有什么优势吗? [复制]
【发布时间】:2015-03-09 17:25:11
【问题描述】:

根据this question about raw arrays vs std::vector 上接受的答案,原始数组(早在 2010 年)的优点是:

  • 数组更紧凑:大小是隐式的
  • 数组不可调整大小;有时这是可取的
  • 数组不需要解析额外的 STL 标头(编译时)
  • 可以更轻松地与带有数组的纯 C 代码进行交互(例如,如果 C 正在分配并且 C++ 正在使用)
  • 固定大小的数组可以直接嵌入到结构或对象中,这可以改善内存局部性并减少所需的堆分配数量

据我所知,std::array 解决了除第三点之外的所有问题。

所以除非我迫切需要改进我的编译时间,有没有理由在 C++11 中使用原始数组而不是 std::array?

【问题讨论】:

标签: c++ arrays c++11 stl stdarray


【解决方案1】:

是的,它不需要你显式指定大小,这样更容易手动初始化:

char const *messages[] =
{
    "Hi",
    "Bye",
    "foo",
    "bar"
};

【讨论】:

  • 请注意,C++17 在核心语言中添加了CTAD,在标准库中添加了std::array deduction guides,这允许不显式指定大小以上代码sn-p。
猜你喜欢
  • 1970-01-01
  • 2017-08-13
  • 2017-08-28
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多