高端网站制作建设,天津开发区建网站公司,wordpress 小熊资源网,做类似360手赚那样的网站STL-bitset使用方法 文章目录 STL-bitset使用方法 容器描述#xff1a; bitset是一种特殊的数组#xff0c;它的每一个元素只能是0或1。每个元素只占用1bit空间#xff0c;所以它是一种空间效率极高的数据结构。bitset在处理大量的位级数据时非常有用。
使用方法#xff1…STL-bitset使用方法 文章目录 STL-bitset使用方法 容器描述 bitset是一种特殊的数组它的每一个元素只能是0或1。每个元素只占用1bit空间所以它是一种空间效率极高的数据结构。bitset在处理大量的位级数据时非常有用。
使用方法 首先你需要包含头文件#include bitset然后声明一个bitset对象如std::bitset10 b;。这将创建一个可以存储10位的bitset。
底层实现 bitset的底层实现通常是一个或多个unsigned long类型的数组。每个unsigned long可以存储多个位具体取决于系统中unsigned long的大小。例如在一个32位系统中一个unsigned long可以存储32个位。
支持操作
操作名效果传入参数操作返回值set()将所有位设置为1无返回bitset引用set(size_t pos, bool val true)将指定位设置为valpos: 位的位置val: 要设置的值返回bitset引用reset()将所有位设置为0无返回bitset引用reset(size_t pos)将指定位设置为0pos: 位的位置返回bitset引用flip()翻转所有位无返回bitset引用flip(size_t pos)翻转指定位pos: 位的位置返回bitset引用operator[]访问指定位pos: 位的位置返回指定位的引用count()返回1的数量无返回1的数量size()返回位的数量无返回位的数量test(size_t pos)检查指定位是否为1pos: 位的位置如果指定位为1返回true否则返回falseany()检查是否有位为1无如果有位为1返回true否则返回falsenone()检查是否没有位为1无如果没有位为1返回true否则返回false
常用示例
#include bitset
#include iostreamint main() {std::bitset8 b;b.set(1);b.flip(2);std::cout b b std::endl;std::cout b[1] b[1] std::endl;std::cout b.count() b.count() std::endl;return 0;
}经常产生的问题
bitset的大小在编译时需要确定不能在运行时动态改变。bitset不支持迭代器。如果需要处理的位数超过了bitset的大小会抛出std::out_of_range异常。