sizeof() std::vector (C++)

自作多情 提交于 2019-11-29 01:57:39

What do you mean by size of the vector? The size of the vector object is just

sizeof(vec);

If you are interested in how much memory the vector has allocated on the heap, you can use

vec.capacity()*sizeof(T)

So, if you add these, you'll get how much memory you've "lost" because of the vector.

vec.capacity()*sizeof(T) + sizeof(vec)

Please note that exactly how much memory is allocated is implementation-dependent. It's just that the formula above will be practically correct (or approximately correct) on most if not all implementations.

If you want to know the size of the data contained within the vector

std::vector<int> vec;
...
vec.size() * sizeof(decltype(bufferIn)::value_type))

If the type is changed from int to say long long nothing else has to be changed. I find this solution safer then the one using the type in the sizeof because it one can easily be changed without the other.

std::vector<long long> vec; // lets go from int to int64
...
vec.size() * sizeof(int); // woops problem on the horizon
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!