我有一个 A 类的大型对象数组(千万个),我想添加一个向量作为 A 类的成员。这个向量只需要数组中的少数对象。我想知道,将向量添加到类中会是一个明智的选择吗?多少内存将占用一个空向量?
问问题
138 次
1 回答
1
现在我们知道空向量不是很“大”(VC2012x64 intellisense showsizeof(std::vector<int>)
是 16 字节)。如果sizeof(A)
比向量的大小大得多,则将向量成员添加到 A 对您来说可能是一个很好的解决方案。但是如果它不好,并且会增加很多内存,而且实际上没有多少 A 有向量,我会用向量创建第二个容器。例如:
#include <unordered_map>
unordered_map<size_t , vector<T>> VectorForA;
其中 size_t 的意思是 A 的大数组的索引类型,以及vector<T>
要添加到 A 的向量的类型。这对于固定索引“大”数组可能是好的。如果不知何故大数组中的 A 没有固定位置,则将 A 的值设为键可能会导致更简单的代码(同样,仅当 A 的值不重复时)。
注意:我(我)希望看到@Andy Prowl 或@Tony D 的完整答案,我认为这将非常有用
于 2013-01-28T09:07:55.367 回答