C++ bitset 问题

标签 c++

我想问两个 C++ 位集问题。

(1) 如何从函数参数创建指定长度的位集?我的意思是,例如,我有一个函数

void f(int n)

里面f ,我需要创建bitset<n> bs;这是可行的吗?

(2) 如何复制位集的一部分 bs形成一个新的位集?例如,给定 starting index i1ending 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/

相关文章:

c++ - 为什么循环中的 itr = vector.erase(itr) 导致内存损坏?我在这里做错了什么吗?

C++:什么是技术层面的 R 值引用 (ASM)?

c++ - std::deque 内存使用 - Visual C++,以及与其他人的比较

c++ - 将成员函数更改为 const 静默破坏代码

c++ - undefined symbol std::__throw_bad_function_call

c++ - 如何找到指针使用的字节数?

c++ - 用户定义类的 Bind2nd 问题

c++ - 错误在哪里?显示字符串 C++ Vigenere 密码

c++ - 如何使用 C++ 读取和解析 URL 的 XML 或 JSON 内容?

c++ - 我们如何在 openGL 中相对于一个点(而不是原点)旋转 2d 中的图形?