Roy
Roy

Reputation: 137

Empty vector in large array of objects

I have a large array of objects (10s Millions) of class A and I want to add a vector as a member to the class A. This vector is needed just for few percent of objects in the array. I was wondering, would it be a wise choice to add a vector to the class? how much memory will take an empty vector?

Upvotes: 0

Views: 150

Answers (1)

qPCR4vir
qPCR4vir

Reputation: 3571

Now we know that empty vector are not very “big” (VC2012x64 intellisense show sizeof(std::vector<int>) is 16 byte). If sizeof(A) is much bigger than size-of vector adding a vector member to A could be a good solution for you. But if it is not good, and will add to much memory, and really not many A has the vector, I’d create a second container with the vectors. For example:

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

where size_t is mean to be the type of the index of the big array of A, and vector<T> the type of the vector you want to add to A. This could be good for a fixed index "big" array. If somehow the A's in the big array dont have fixed positions, making the value of A the key could led to a simpler code(also, only if the values of A dont repeat).

NOTE: I was (I'm) wating to see a full answer from @Andy Prowl or @Tony D with I think will be very usefull

Upvotes: 1

Related Questions