如何解决C++ 中 sizeof() 返回的向量大小
我只是在尝试 C++,这是我执行的代码片段:
int main() {
std::vector<int> data = { 1,2,3,4,5 };
std::cout << data.size() << " " << sizeof(data) << " " << sizeof(data[0]) << std::endl;
return 0;
}
我得到的输出是: 5 16 4 现在我知道 size() 返回向量中的元素数,即。 5 这里和 sizeof() 返回变量占用的字节数。 sizeof(data[0]) 为 4 个字节是有意义的,因为它是一个 int 并且 Visual Studio 编译器为它分配了 4 个字节,但我不明白为什么 sizeof(data) 返回 16。我正在计算 20。对此的任何解释都是很有帮助。
解决方法
std::vector<T>
使用动态存储,其大小可以更改,如文档中所述。与 std::array<T,size>
不同,它不是聚合类型,并且存储的数据不是类存储的一部分。 sizeof
返回存储的大小,这是一个在编译时确定的常数,根据 C++ 规则。
因此,您将苹果与橙子进行比较。 sizeof
以字节为单位返回向量类型的大小,成员函数 size()
返回创建的元素数。成员函数 capacity()
将返回分配的内存,该内存可以大于 size()*sizeof(T)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。