原始指针、智能指针或 std::vector 用于C++中"low-level"容器数据



假设我正在创建自己的Matrix类/容器,该类/容器本身需要管理某种双精度数组和行/列维度。

冒着听起来像波浪手的风险;最佳实践";如果速度很重要,如何存储这些数据?我能看到的选项是:

  • 指向单个动态C数组的原始指针
  • 指向C数组的唯一指针,它与
  • std::双精度矢量

这些不同选项的速度含义是什么?显然,这确实取决于环境,但在一般情况下?此外,对于我来说,MSVC和GCC上的std::向量的大小是24字节,表示指向开始迭代器、结束迭代器和内存分配结束的3个指针。由于我需要自己存储大小以了解矩阵维度,所以端迭代器对我来说有些无用,只需与算法一起使用。

对此最佳实践有何看法?使用原始指针是可接受的,因为容器在某种程度上是"可接受的";低级的";?

谢谢!

我会使用std::vector,因为它解决了内存分配、释放、索引、复制等问题;数百万";同时,额外的成员(capacity(可能不相关。

在任何情况下,优化库的速度是您最不想做的事情——在您可以测试初始实现的实际速度之后。然后,您可以决定是否值得花时间用自己的实现有效地复制std::vector功能。

最新更新