sizeof()一个向量

pet*_*rJk 16 c++ vector sizeof

我有一个vector<set<char> >数据结构(交易数据库),我想知道它的大小.当我使用sizeof()时,每个set<char>大小为24,尽管该组包含3,4或5个字符.后来,当我使用sizeof()时,vector<set<char> >大小为12 ...我想这不是了解数据结构大小的方法.有帮助吗?谢谢.

小智 24

你想要vector::size()set::size().

假设v是你的向量,请执行以下操作:

size_t size = 0;
for (vector<set<char> >::const_iterator cit = v.begin(); cit != v.end(); ++cit) {
    size += cit->size();
}
Run Code Online (Sandbox Code Playgroud)

sizeof()给你的是它所应用的对象/类型的内存大小,以sizeof(char)(通常是一个字节)的倍数表示.如果您想知道容器及其元素的内存大小,可以这样做:

sizeof(v) + sizeof(T) * v.capacity(); // where T is the element type


And*_*rey 12

sizeof返回对象本身的大小.如果它包含指向数组的指针,例如它不计算数组的大小,它将只计算指针的大小(32位为4)以供向量使用.size


Ste*_*yle 6

使用指向实际存储的内部指针实现Vector.因此,sizeof()将始终返回不包含数据存储本身的相同结果.请尝试使用该vector::size()方法.这将返回向量中的元素数.