c++ - C++中bitset的大小是多少

标签 c++ memory-management bitset

我想知道 bitset 是如何实际分配内存的。我从一些博客中读到它会占用内存。但是,当我运行以下代码时:

   bitset<3> bits = 001;
   cout<<sizeof(bits);

我得到的输出为 4。它背后的解释是什么?

还有一种方法可以在 C++ 中以位为单位分配空间吗?

最佳答案

您可以近似 sizeof(bitset<N>)如:

  1. 如果内部表示是 32 位(如 32 位系统上的无符号),则为 4 * ((N + 31) / 32)
  2. 如果内部表示是 64 位(如 64 位系统上的 unsigned long),则为 8 * ((N + 63) / 64)

看来第一个是真的:4 * ((3 + 31) / 32)4

关于c++ - C++中bitset的大小是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459563/

相关文章:

c++ - 通过链表添加多项式

C++ 两个阶乘之和等于 10 的阶乘找到两个值 x 和 y,其阶乘之和

java - 这两个 Java 代码哪个更快?

c++ - 位集或位数组的好库

java - 在 Java 中长期被视为 32 位?

c++ - 使用 mingw 编译时增加堆栈大小?

c++ - 包含 windows.h 会导致与局部变量名称发生冲突

C malloc(段错误 : 11)

c++ - 数组的 auto_ptr

c++ - 为什么通过模板参数实现 Bitsets