我正在尝试将std::vector
转换为boost::dynamic_bitset
。 我可以使用下面的代码实现相反的结果,其中values
是定义为boost::dynamic_bitset
。
std::vector<uint8_t> payload;
boost::to_block_range(values, std::back_inserter(payload));
但是,我想不出如何做它的反面。 以下是编译:
void MyClass::decode(std::vector<uint8_t> payload) const
{
boost::dynamic_bitset<uint8_t> bits(payload.size() * 8);
boost::from_block_range(payload.begin(), payload.end(), bits);
}
如果将bits
局部作用域变量替换为values
类成员变量(从所有迹象来看,它们都是完全相同的类型,boost::dynamic_bitset
),则会出现以下编译器错误:
错误:调用“from_block_range(std::vector
您的decode
方法标记为const
,但您正在尝试修改类成员变量values
。
删除常量
或标记值
可变
例如:
#include <cstdint>
#include <vector>
#include "boost/dynamic_bitset.hpp"
struct foo
{
void do_the_thing()
{
std::vector<uint8_t> payload{1, 2, 3, 4};
bits = boost::dynamic_bitset<uint8_t>(payload.size() * 8);
boost::from_block_range(payload.begin(), payload.end(), bits);
}
boost::dynamic_bitset<uint8_t> bits;
};
int main()
{
foo f;
f.do_the_thing();
}