【问题标题】:How can I discover the size/length(in bytes) of a std::vector?如何发现 std::vector 的大小/长度(以字节为单位)?
【发布时间】:2013-01-09 15:16:12
【问题描述】:

我有一个向量,我想将它写入文件并将其读取到文件中,但无法使用 sizeof 运算符确定向量的逻辑大小。

那我该怎么办?

【问题讨论】:

  • 这就是为什么他们有一个size 函数。但是,在遍历所有元素时,迭代器是比需要知道大小更自然的选择。
  • 如何将其写入文件取决于元素的类型——首先您需要知道是否(以及如何)将它们写入文件。
  • -1 表示不阅读文档。
  • 和 &vector.front() 会给你一个指向内存的指针,这样你就可以 mmap 文件和 memcpy 数据跨度>

标签: c++ vector std


【解决方案1】:

一个 c++ std::vector 有一个方法 size() 返回它的大小。

编辑:据我所知,您需要计算给定向量使用的内存。您不能为此使用 sizeof,因为向量使用动态内存并且仅存储包含其元素的动态数组的指针。所以我最好的建议是将每个元素所需的内存乘以元素的数量。请注意,如果对象存储了指向某些动态分配对象的指针,这将再次不起作用 - 您将不得不再次单独计算它们的大小。

据我所知,没有简单的方法可以在 c++ 中以字节为单位计算内存。

【讨论】:

  • 你想测量内存大小这个向量需要吗?
  • 嘿,我的向量要获得它的大小更复杂,因为它是由一个对象组成的,它由一些向量和一些字符串以及许多其他具有相同情况的东西组成,我想要一个像 memcopy 这样的东西
猜你喜欢
  • 2011-09-08
  • 2013-02-01
  • 2013-03-26
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多