您可以为您的对象使用竞技场策略。基本上我们的对象将只包含一个索引和一个数据区的句柄。实际数据存储在正确索引的竞技场中。这样,当您需要创建 double 的向量时,它已经存在于竞技场中。
这仅在您始终知道哪些对象被一起处理并且它们几乎总是一起处理的情况下才有效。如果您每次都需要选择需要的对象,这不会给您带来任何性能提升(除非对象在数组中始终是连续的)。这也使常规对象访问速度稍慢一些,因此只有在每次复制值确实是您程序中的瓶颈时才有意义。
您的数据结构如下所示:
class Arena {
vector<double> propertyX;
vector<double> propertyY;
int next_index;
};
class MyObject {
int index;
Arena& arena
MyObject(Arena& arena_ref): arena(arena_ref) { index = arena.next_index++; }
double getX() { return arena.propertyX[index]; }
};
你需要更多的代码来确保分配的东西等等,但你明白了。现在,当您需要调用外部库时,您可以直接从Arena
对象中获取数组。