如果我使用 Array 而不是 Vector 有什么缺点吗?

OHL*_*ÁLÁ 5 c c++ memory

我用 C++ 编写了一个 MPC 控制器,其中包括一个 Matrix 类,我将数据存储在一个数组中,并使用了 C 内存函数(memcpy、memset 等)。今天我用c++向量替换了数组,我用copy来移动内存等等……我遇到了一个问题,用向量替换数组,控制信号的计算时间几乎加倍了。

如果我使用 alloc、memcpy、memset、free ins c++ 代码有什么缺点吗?如果有的话,那些是什么?

Som*_*ame 2

Vector增值体现在2个方面:

  1. 提供数组中不存在的附加功能C,例如调整大小、检查当前大小等。您可能会从其界面到自定义解决方案找到更好的替代方案。
  2. 捕获一些错误,例如寻址超出vector.

如果您对专有数据管理感到满意并对代码质量充满信心,则不需要vector. 但请注意,这可能会带来一些软件问题,例如C与相比,数组的可维护性降低vector(例如,未来的代码可能会访问越界值,即使您当前的代码没有)。

编辑:请参阅@Als 的答案,了解您的情况的可能替代方案(std::array)。