首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何最有效地序列化/反序列化std::vector<bool>?

如何最有效地序列化/反序列化std::vector<bool>?
EN

Stack Overflow用户
提问于 2019-12-10 13:13:19
回答 2查看 139关注 0票数 4

我试图将std::vector<bool>的内容写入一个二进制文件中。由于许多STL输出流的write()方法接受指向数组本身的指针,以及要写入的字节数,所以我最终会执行如下操作:

代码语言:javascript
复制
std::vector<unsigned int> dataVector = {0, 1, 2, 3, 4};
std::fstream outStream = std::fstream("vectordump.bin", std::ios::out | std::ios::binary);
outStream.write((char*) dataVector.data(), dataVector.size() * sizeof(unsigned int));
outStream.close();

但是,std::vector<bool>是一个特例,因为STL实现允许将bools打包到单个位中。因此,上述方法在技术上并不一致,因为它没有具体说明数据是如何精确地放置在内存中的。

是否有任何方法可以序列化/反序列化我的bool载体而不必打包/解压缩数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-10 13:18:22

我认为你最好把这个向量转换成std::vector<std::byte>/std::vector<unsigned char>

std::vector<bool>甚至不需要有连续的内存,所以从data()开始编写也是定义的。

票数 10
EN

Stack Overflow用户

发布于 2019-12-10 13:17:25

不,没有。

抱歉的。

一个很好的理由来避免这个容器!

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

https://stackoverflow.com/questions/59268058

复制
相关文章

相似问题

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