使用数组而不是std :: vector的优点?

MOn*_*DaR 9 c++ arrays stl coding-style vector

我目前看到很多标记为C++的问题,并且是关于处理数组的.
甚至还有一些问题会询问有关阵列的方法/功能,而这些问题std::vector可以提供没有任何魔力的.

所以我想知道为什么这么多开发人员std::vector在C++ 中选择数组呢?

Mr *_*ooz 9

一般来说,我更倾向于使用数组上的向量来进行非平凡的工作; 但是,阵列有一些优点.

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

  • 唉,"如此多的开发人员在C++中使用std :: vector选择数组"的原因仅仅是因为他们阅读了一些旧/坏书,现在不愿意转换到新的编程水平.我怀疑在决定使用数组之前,许多人甚至会考虑你的任何一点.无论提供什么向量,任何程序员理论上都必须能够使用数组,因为如果你不理解指针和他们的算术你就不能成为一个好的c ++程序员 (11认同)
  • 另外:*阵列更快;*数组可以静态初始化(而向量总是在运行时动态初始化) (2认同)

Ale*_*min 5

因为C ++ 03没有向量文字。使用数组有时可能会产生更简洁的代码。

与数组初始化相比:

char arr[4] = {'A', 'B', 'C', 'D'};
Run Code Online (Sandbox Code Playgroud)

向量初始化看起来有些冗长

std::vector<char> v;
v.push_back('A');
v.push_back('B');
...
Run Code Online (Sandbox Code Playgroud)