[英]Raw pointer, smart pointer or std::vector for “low-level” container data in C++
假设我正在制作自己的 Matrix 类/容器,它本身需要管理某种双精度数组和行/列维度。
冒着听起来不自然的风险,如果速度很重要,如何存储这些数据被认为是“最佳实践”? 我可以看到的选项是:
这些不同选项的速度影响是什么? 显然它确实取决于情况,但在一般情况下呢? 此外,对我来说,MSVC 和 GCC 上的 std::vector 的大小是 24 个字节,表示指向开始迭代器、结束迭代器和 memory 分配结束的 3 个指针。 由于我需要自己存储大小以了解矩阵维度,因此最终迭代器对我来说有点无用,希望与算法一起使用。
对此最佳实践有何想法? 由于容器有点“低级”,因此使用原始指针是否可以接受?
谢谢!
我会使用std::vector
因为它解决了 memory 分配、解除分配、索引、复制等问题。除非您将同时使用“数百万”个矩阵,否则额外的成员( capacity
)可能不相关。
无论如何,优化库的速度是您最不想做的事情——在您可以测试初始实现的实际速度之后。 然后你可以决定是否值得花时间用你自己的实现有效地复制std::vector
功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.