我记得c ++引子说2d矢量效率很低,应该避免。 但是在创建和删除方面,2d数组似乎相当不方便。
还有其他办法吗?或者2d矢量仍然可以与2d阵列竞争?
答案 0 :(得分:1)
我怀疑这很重要。还有其他因素会更重要。
我会质疑首发前提:
2d向量效率低
有时我们会以纯粹的速度换取更好的抽象。我敢打赌,与原始字节或字符数组相比,std::string
类可以被认为是低效的,但我仍然使用它。
如果您不再担心广泛的陈述并专注于您的使用案例,那么您会有更好的案例。
我所知道的2D阵列最常见的应用是矢量,基质和线性代数。该问题还有其他因素比基础数据结构的选择重要得多。
由于C ++是面向对象的语言,因此您可以通过从接口开始并创建使用向量和数组的实现来轻松解决此问题。根据有意义的数据集和度量对它们进行测试。