gpt4 book ai didi

c++ - 如何存储大小位数组,例如大小 % 8 != 0?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:39 24 4
gpt4 key购买 nike

我处理一些数据,它表示为一个位序列,
number(378) 其中不能被 8 整除。

有哪些可能的方法来处理这样的序列?
我需要存储它、处理它、将一个序列附加到另一个序列。

我考虑过的选项:

  1. 四舍五入到最接近的数字 % 8 == 0,并使用该大小的字符数组。
  2. 使用 bitfield,据我所知,bitfield 的内存对齐是实现定义的。

更新:
我正在使用的位序列的属性:
它是使用 Reed-Solomon 编码算法从给定单词生成的代码字。
因此,将位作为独立值使用对我来说没有实际用处,我主要关心的是如何存储代码字并将新代码字附加到现有代码字上,因为为了减少突发错误的影响,我创建了交错矩阵

最佳答案

另一种选择是使用 std::vector。 bool 类型的 std::vector 专用于 bool 以仅使用 ⌈v.size()/8⌉字节。但我并不是说你应该使用它。这种特化是原因v.begin()不仅仅是一个原始指针,而是一些依赖于类型的迭代器。在所有其他情况下 v.begin() vector 的指针始终是指向元素的指针。

如果位数组的长度很长,但您希望只设置很少的位,您还应该考虑使用 std::set<int>相反,它存储了应该为真的位的索引。

关于c++ - 如何存储大小位数组,例如大小 % 8 != 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com