STL位标志的使用

目录

STL位标志的使用

Bitset注意事项

Bitset的STL算法

Bitset部分:代码示例

部分一

部分二

Bitset部分:结果显示

Bitset与vector的异同点

Vector部分:代码示例

Vector部分:结果显示


STL位标志的使用

Bitset注意事项

位可以存储两种状态:要么是已设置(1),要么是重置(0)。

Bitset的STL算法

 

 

 

Bitset部分:代码示例

部分一

#include <iostream>  
#include <bitset>  
#include <vector>  
using namespace std;  
  
int main()  
{  
    bitset<4> BitFlag1("1101"),BitFlag2(1000),BitFlag3(0b0010); // Bitset中的元素要么为1要么为0  
    bitset<4> BitFlag4(BitFlag1^BitFlag2);  
    cout << BitFlag1 << endl;  
    cout << BitFlag1.flip() << endl; // 全部按位取反  
    cout << BitFlag3 << endl;  
    cout << BitFlag3[1] << endl;  // 用下标访问元素
    cout << (BitFlag1 & BitFlag2^BitFlag3 | BitFlag4) << endl;  
    cout << "BitFlag1中1的个数是" << BitFlag1.count() << endl;  
    cout << "将BitFlag4的第0位置0,得" << BitFlag4.reset(1) << endl;  
    cout << "将BitFlag4的第0位置1,得" << BitFlag4.set(1) << endl;  
}  

 

部分二

#include <vector>  
#include <bitset>  
#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
    bitset<4> BitFlag1(3), BitFlag2(8), BitFlag3;  
    BitFlag3 = BitFlag1.to_ullong() + BitFlag2.to_ullong(); // to_ullong将二进制变量转化为十进制无符号长长整型(unsigned long long)变量  
    cout << BitFlag3.to_ulong() << endl; // 与to_ullong功能一样,将二进制变量转换为unsigned long型的变量  
    string Num = to_string(8 + 7); // to_string用于将bitset类型的变量转换为string类型的变量  
    cout << Num + "sss" << endl; // 此时Num变成了string类型的字符串  
}  

 

Bitset部分:结果显示

 

我们会发现:BitFlag为1101,但是在内存中是倒序存在的为1011.

Bitset与vector<bool>的异同点

Bitset只能包含有限的位进行运算,因此我们在用bitset之前必须要明确包含的位数,而vector<bool>可以动态地扩展内存理论上来讲可以包含无限的位进行运算,前者可进行位运算,后者则不可。

Bitset与vector<bool>中包含的元素都是1或者0 。

Vector<bool>部分:代码示例

#include <iostream>  
#include <vector>  
using namespace std;  
  
int main()  
{  
    vector<bool> VectorBoolArray1{ 1,1,0,1 },VectorBoolArray2;  
    VectorBoolArray1.flip(); // 按位取反  
    VectorBoolArray2.push_back(1);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2[2] = 1;  
    VectorBoolArray2.at(1) = 0;  
}  
// STL算法均适用于vector<bool>,除此之外还多了一个其他vector容器没有的函数:flip按位取反函数.

 

Vector<bool>部分:结果显示

 

我们发现:vector<bool>存储bool变量的顺序与变量输入顺序相同,不同于bitset的颠倒排列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥肥胖胖是太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值