我想问两个 C++ 位集问题。
(1) 如何从函数参数创建指定长度的位集?我的意思是,例如,我有一个函数
void f(int n)
里面f
,我需要创建bitset<n> bs;
这是可行的吗?
(2) 如何复制位集的一部分 bs
形成一个新的位集?例如,给定 starting index i1
和ending index i2
哪里i1
>= i2
,我需要通过复制bs
中的这些位来形成一个新的位集。从最少i2
最小的第一个有效位 i1
包含第 3 个有效位(只是为了符合 STL
约定)。
谢谢。
最佳答案
(1) 不适用于 std::bitset
,因为大小需要是编译时常量(整数常量表达式)。您可以使用 boost::dynamic_bitset
,或者,std::vector<bool>
或std::vector<char>
(2) std::bitset
没有您正在寻找的特殊构造函数。您将需要编写一个显式循环。然而,(1) 中列出的所有其他选项都有一个带有两个迭代器的构造函数。
关于C++ bitset 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508319/