我有一个vector<set<char> >数据结构(事务数据库),我想知道它的大小。当我对每个set<char>使用sizeof()时,大小是24,尽管集合包含3、4或5个字符。后来,当我对vector<set<char> >使用sizeof()时,大小是12...我想这不是知道数据结构大小的方法。有什么帮助吗?谢谢。
发布于 2010-03-04 00:54:47
你想要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();
}sizeof()给出了它所应用的对象/类型的内存大小,单位是sizeof(char)的倍数(通常是一个字节)。如果你想知道容器及其元素在内存中的大小,你可以这样做:
sizeof(v) + sizeof(T) * v.capacity(); // where T is the element type
发布于 2010-03-04 00:55:41
sizeof返回object本身的大小。例如,如果它包含指向数组的指针,则不会计算数组的大小,对于使用.size的向量,它将只计算指针的大小(4 / 32位
发布于 2010-03-04 00:56:40
Vector是使用指向实际存储的内部指针实现的。因此,sizeof()将始终返回相同的结果,其中不包括数据存储本身。请尝试使用vector::size()方法。这将返回向量中元素的数量。
https://stackoverflow.com/questions/2373189
复制相似问题