在大数组的空的传染媒介对象

时间:2013-01-28 00:49:18

标签: c++ class vector

我有一个A类的大量对象(10s Millions),我想将一个向量作为成员添加到A类中。这个向量只需要数组中几个百分比的对象。我想知道,在课堂上添加一个向量是明智的选择吗?一个空的向量需要多少内存?

1 个答案:

答案 0 :(得分:1)

现在我们知道空向量不是很“大”(VC2012x64 intellisense show sizeof(std::vector<int>)是16字节)。如果sizeof(A)远大于向量的大小,向A添加向量成员可能是一个很好的解决方案。但是如果它不好,并且会增加很多内存,并且真的没有很多A有向量,我会用向量创建第二个容器。例如:

#include <unordered_map>
unordered_map<size_t , vector<T>> VectorForA;

其中size_t是A大数组索引的类型,vector<T>是要添加到A的向量类型。这对于固定索引“big”可能有用阵列。如果不知何故大数组中的A没有固定位置,那么使A的值成为键可能会导致更简单的代码(同样,只有当A的值不重复时)。

注意:我(我)正在寻找@Andy Prowl或@Tony D的完整答案,我认为这将是非常有用的