使用变量设置bitset的大小
Use a variable to set the size of a bitset
我想知道如何使用变量设置bitset的大小。例如,
// obtain file size:
fseek (rFile , 0 , SEEK_END);
numberOfBytes = ftell (rFile);
rewind (rFile);
const unsigned long long buffSize = numberOfBytes * 8;
std::bitset<buffSize> buffer;
我收到一条错误消息,说buffsize的值在恒定表达式中无法使用。我正在寻找一种将bitset设置为当前正在阅读的文件的大小的方法。
无法完成。std:bitset
的大小是模板参数,因此必须是编译时常数。
可以/可以工作的一些选择是:
- 在大小上设置上限,使用该大小的
bitset
,然后忽略多余的位。 - 切换到
std::vector<bool>
。这有警告,但提供了与bitset
的大致相似的基本功能。 - 切换到Boost
dynamic_bitset
。这将使您将大小指定为CTOR的参数,而不是模板参数,因此它不需要是编译时常数。
当然还有其他可能性。就个人而言,我的首选可能是Boost dynamic_bitset
。
有两种不同类型的常数,编译时间常数以及声明为 const
的所有其他类型。在您的代码中,您有后者。即使将其称为const
是用直到运行时间才知道的数据,因此它不是编译时间常数。
std::bitset
需要通过编译时间常数来定义。由于您没有一个编译器会给您带来错误。如果您需要在运行时定义的斑点,我建议boost::dynamic_bitset
。
您不能,需要在编译时间
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 使用变量设置bitset的大小
- 如何查询范围中的任何位是否在 C++ std::bitset 中设置
- 如何根据浮点值条件数组在bitset中设置值