本文介绍了向量有多少字节?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的,


使用sizeof(vector< TYPE>)将始终返回16个字节。

如果我有N个元素(整数),

总内存是

sizeof(vector< int>)+ sizeof(int)* N,

或sizeof(vector< int>) * N,

或其他人?


感谢您的帮助。


最诚挚的问候,

cylin。

解决方案




应该很漂亮关闭,提供N == capacity()而不是N == size()。向量的

容量是它为自己分配的存储量,这个
通常超过向量的大小。


John





不是矢量使用的堆分配内存来存储它

elementes ??所以sizeof()实际上返回了

容器结构的(常量)大小,该结构内部有一个指向

堆分配的内存块的指针...... />




我怀疑函数保留。

例如:

向量< int> iVector,我向这个向量添加了100个元素。

iVector.capacity()= 128

iVector.size()= 100。


如果我使用iVector.reserve(iVector.size()),

然后iVector.capacity()= 128.

似乎没用。



Dear all,

Using sizeof(vector<TYPE>) will always return 16 bytes.
If I have N elements ( integer ),
the total memory is
sizeof(vector<int>)+sizeof(int)*N,
or sizeof(vector<int>)*N,
or others?

Thanks your help.

Best Regards,
cylin.

解决方案



That should be pretty close, providing N == capacity() not N == size(). The
capacity of a vector is how much storage it has allocated for itself, this
is often more than the size of the vector.

John




isn''t it that the vector uses heap allocated memory to store its
elementes?? so sizeof() actually returns the (constant) size of the
container structure, which internally has a pointer to a
heap-allocated chunk of memory...




I doubt about the function "reserve".
For example:
A vector<int> iVector, and I add 100 elements to this vector.
iVector.capacity()=128
iVector.size()=100.

If I use iVector.reserve(iVector.size()),
then iVector.capacity()=128.
It seems no use.



这篇关于向量有多少字节?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-24 11:16