如何高效运用C++ std::bitset实现位运算与空间优化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1197个文字,预计阅读时间需要5分钟。
std::bitset 不是用来炫技的,它是解决空间和速度瓶颈的工具——提前是大小已知、状态离散、访问密集。
为什么不能用 std::vector<bool></bool> 替代 std::bitset 做状态管理?
看似都是“存 bool”,但行为完全不同:std::vector<bool></bool> 是特化代理类,v[5] 返回的是临时代理对象,不能取地址、不能原子更新、部分实现还有额外间接跳转;而 std::bitset 的 b[5] 是直接位寻址,支持 b[5] = true、&b[5](合法)、甚至可映射到共享内存做进程间标志同步。
本文共计1197个文字,预计阅读时间需要5分钟。
std::bitset 不是用来炫技的,它是解决空间和速度瓶颈的工具——提前是大小已知、状态离散、访问密集。
为什么不能用 std::vector<bool></bool> 替代 std::bitset 做状态管理?
看似都是“存 bool”,但行为完全不同:std::vector<bool></bool> 是特化代理类,v[5] 返回的是临时代理对象,不能取地址、不能原子更新、部分实现还有额外间接跳转;而 std::bitset 的 b[5] 是直接位寻址,支持 b[5] = true、&b[5](合法)、甚至可映射到共享内存做进程间标志同步。

