本文为博主原创文章,未经博主允许不得转载。
https://blog.csdn.net/lxy_2011/article/details/52690822
一、今日课题
bitset
二、实战演练
C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码。
1)有何用?
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。
2)怎么用?
初始化
bitset<n> b;//b有n位,每位都为0
bitset<n> b(u); //b是unsigned long型u的一个副本
bitset<n> b(s); //b是string对象s中含有的位串的副本
bitset<n> b(s, pos, n); //b是s中从位置pos开始的n个位的副本
代码示例
#include <iostream>
#include<bitset>
using namespace std;
int main()
{
//bitset使用整数初始化bitset
bitset<3> bs(7);
//输出bs各个位的值
cout << "bs[0] is" << bs[0] << endl;
cout << "bs[1] is" << bs[1] << endl;
cout << "bs[2] is" << bs[2] << endl;
//使用字符串初始化bitset
string strVal("011");
bitset<3> bs1(strVal);
//输出各位
cout << "bs1[0] is " << bs1[0] << endl;
cout << "bs1[1] is " << bs1[1] << endl;
cout << "bs1[2] is " << bs1[2] << endl;
//cout输出时也是从右边向左边输出
cout << bs1 << endl;
//bitset的方法
//any()方法如果有一位为1,则返回1
cout << "bs1.any() = " << bs1.any() << endl;
//none()方法,如果有一个为1none则返回0,如果全为0则返回1
bitset<3> bsNone;
cout << "bsNone.none() = " << bsNone.none() << endl;
//count()返回几个位为1
cout << "bs1.count() = " << bs1.count() << endl;
//size()返回位数
cout << "bs1.size() = " << bs1.size() << endl;
system("pause");
return 0;
}
3)Access & Operations