首页 理论教育 C++STL精解:bitset(位集合)类模板

C++STL精解:bitset(位集合)类模板

时间:2023-10-25 理论教育 版权反馈
【摘要】:例3-1中简单介绍了bitset类。本节专门讲解bitset类的使用。bitset类模板创造了1个内含位或布尔值且大小固定的数组。当需要管理各种标识,并需要以标识的任意组合表现变量时,即可使用bitset类模板。bitset型容器可视为由0和1组成的序列,进而实现各种读写操作。bitset型容器中变量或对象的位的个数是由模板参数决定的。bitset类模板的成员函数见表3-3。

C++STL精解:bitset(位集合)类模板

例3-1中简单介绍了bitset类。本节专门讲解bitset类的使用。bitset类模板创造了1个内含位或布尔值且大小固定的数组。当需要管理各种标识,并需要以标识的任意组合表现变量时,即可使用bitset类模板。在C语言或者C++语言中,通常使用型别long来作为bitsar-ray,再通过位操作符(&,!,~等)实现操作各个“位”。类bitset的优点在于它可容纳任意个数的位,并能提供各项操作。bitset型容器可视为由0和1组成的序列,进而实现各种读写操作。

对于既定的bitset型容器,其中位的个数是不能改变的。bitset型容器中变量或对象的位的个数是由模板参数决定的。如果需要使用可变长度的位容器,可考虑使用模板vector<bool>。

注意:模板参数并不是一个型别,而是一个无符号型整数。

如果在定义对象时,使用的模板参数不同,会导致模板的型别不同。因此,在对bitset型对象进行比较和组合时,两个对象或多个对象的位的个数必须相同。类模板bitset的构造函数包括以下形式:

978-7-111-51399-5-Chapter03-207.jpg

第一种形式的构造函数将复位bitset型对象中的所有位(例如对bitset型对象进行全部清零)。第二种形式的构造函数的参数为整数,该数值的二进制形式对应的位为1。第三种形式的构造函数使用字符串对bitset对象实现初始化

对于第三种形式的构造函数,参数str是用来初始化对象的初始字符串;参数pos的含义表明在字符串str中,从pos位置开始的子字符串“才是赋值给类bitset模板对象的字符串”,即赋值时采用的是str的某个子串;参数n说明是从pos位置开始的,长度为n的子字符串,该子字符串用来给bitset类对象赋值。

bitset类模板的成员函数见表3-3。

3-3 bitset类模板的成员函数(www.xing528.com)

978-7-111-51399-5-Chapter03-208.jpg

下面用例3-42阐释bitset类模板的使用方法。

例3-42

978-7-111-51399-5-Chapter03-209.jpg

978-7-111-51399-5-Chapter03-210.jpg

例3-42的执行效果如图3-43所示。

总结

bitset类模板有些类似于C语言中的“位段”,只不过bitset是以类模板的形式存在,可以实例化为bitset型类或者bitset型容器。STL为bitset提供了一系列的成员函数,便于对该型容器的操作和访问。读者应该重点关注bitset型容器的用途,并掌握bitset型容器的具体使用方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈