C++每日一练(STL_Bitset)

151 阅读1分钟

本文已参与「新人创作礼活动」,一起开启掘金创作之路。

一、今日课题

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

这里写图片描述