首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sizeof() a向量

sizeof() a向量
EN

Stack Overflow用户
提问于 2010-03-04 00:51:56
回答 6查看 64.6K关注 0票数 17

我有一个vector<set<char> >数据结构(事务数据库),我想知道它的大小。当我对每个set<char>使用sizeof()时,大小是24,尽管集合包含3、4或5个字符。后来,当我对vector<set<char> >使用sizeof()时,大小是12...我想这不是知道数据结构大小的方法。有什么帮助吗?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-04 00:54:47

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

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

代码语言:javascript
复制
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

票数 25
EN

Stack Overflow用户

发布于 2010-03-04 00:55:41

sizeof返回object本身的大小。例如,如果它包含指向数组的指针,则不会计算数组的大小,对于使用.size的向量,它将只计算指针的大小(4 / 32位

票数 12
EN

Stack Overflow用户

发布于 2010-03-04 00:56:40

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2373189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档