BitSet数据结构

顾名思义,bitset是位bit的set集合,是可以当做容器使用的一种数据结构。 bitset提供了一些很实用的方法,能用来替代C语言的直接按位运算带来的不便。

#include <string>
#include <bitset>

int main()
{
	std::bitset<5> bs1;			//00000,无参默认0
	std::bitset<5> bs2(4);		//00100,整数转二进制,参数可为16进制
	std::bitset<5> bs3("0011");	//00011,字符串转二进制,缺则补0,多则截断

	bs1.reset();	//00000, 全清空
	bs1.set();		//11111, 全置1

	bs1.set(0, 0);	//11110, 第0位置0
	bs1.set(0, 1);	//11111, 第0位置1

	bs1.reset(1);	//11101,第1位重置

	bs1 ^= 0b11111; //00010, 参与位运算

	bs1[0] = 1;		//00011,下标访问

	bs1.flip(0);	//00010,翻转第0位,无参表示全翻转

	bool isOne = bs1.test(0);  //false,第0位是否1
	bool isAllOne	= bs1.all(); //false,是否全为1
	bool isAnyOne	= bs1.any(); //true,是否有一位是1
	bool isAllZero = bs1.none(); //false,是否全为0

	size_t i = bs1.count();	// 1, 1的个数
	size_t s = bs1.size();	// 5, 容量

	std::string str = bs1.to_string();		//"00010",转字符串
	unsigned long l = bs1.to_ulong();		//2,转无符号long
	unsigned long long ll = bs1.to_ullong();//2,转无符号long long

    return 0;
}



总结

使用bitset来替代直接的位运算或辅助位运算,能增强可阅读性,减少疏忽带来的影响。

全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务