有没有可靠的测试清楚地显示访问和写入嵌套向量与C++的内置数组之间的性能差异?我听说使用嵌套(多维)向量通常比访问单个数组中的元素(其中所有元素都存储在连续的内存中)有一些性能开销,但这对我来说似乎只是假设.我还没有看到任何实际显示这些差异的测试.它们重要吗?我确信它取决于场景,但作为一个缺乏经验的程序员,我不太确定这些差异在多大程度上变得显着.
假设我有一个简单的类:
class Pvector
{
private:
std::vector<long double> point_list;
public:
Pvector(std::initializer_list<long double> coords) : point_list(coords)
{}
Pvector(std::initializer_list<int> coords) : point_list(coords)
{}
};
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为std::vector模板化类型long double无法从模板化类型初始化列表中初始化自身int。然而,这相当不方便,因为删除了第二个构造函数后,我无法在代码中执行以下操作:
Pvector piece_movement({E.X - S.X, E.Y - S.Y, E.Z - S.Z});
Run Code Online (Sandbox Code Playgroud)
这是因为我的算术运算的结果类型是 类型int。所以我似乎陷入了困境。我希望能够将整数直接传递到 for 的构造函数中Pvector,但我仍然希望point_list是类型long double并且(以某种方式)使用我传入的整数进行初始化。我该如何去做呢?