首页 > 编程语言 >C转C++速成浅入浅出系列——STL之bitset

C转C++速成浅入浅出系列——STL之bitset

时间:2024-01-27 14:55:57浏览次数:29  
标签:返回 下标 浅入 unsigned C++ 取反 STL bitset 方法

本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。

bitset

【bitset:位集,比特集】

理解为比特集。特点是 ①只能存入0与1 ②小端存储(可参阅计算机组成原理知识,表现为按b[i]增序输出时会倒序输出

需提供头文件#include <bitset>

 

创建

注:

①存储时按照小端存储方式

②按unsigned int格式转换存入时,如过大溢出则会保留低位(如62则会保留低5位,即11110,30)

③按字符串格式存入时,如溢出则会对字符串剩余部分进行截断

1 string s = "1010";
2 bitset <5> b1;        //默认为全0
3 bitset <5> b2(10);    //将unsigned int值转换为二进制数,再进行存储
4 bitset <5> b3(s);        //将字符串读入低位,高位不足时会补充0
5 bitset <5> b4(s,2,2);    //从字符串s的s[2]开始,读入2个比特值

 

设1

使用.set(下标)方法将指定位置设置为1。

b.set(2);

 

归0

使用.reset(下标)方法将指定位置设置为0。若不填写下标,将整个bitset全部归0。

b.reset(2);
b.reset();

 

取反

使用.flip(下标)方法将指定位置进行取反。若不填写下标,将真个bitset全部进行取反。

b.flip(2);
b.flip();

 

测试

使用.test(下标)方法对指定位置进行测试,查验是否为1。是则返回1,否则返回0。

b.test(2);

 

验1

使用.any()方法和.none()方法验证整个bitset中是否存在1。二者正好相反

对于.any()方法,若存在1返回1,否则返回0。

对于.none()方法,若不存在1返回1,否则返回0。

b.none();

 

获取1个数

使用.count()方法统计bitset中的1的个数。

cout << b.count();

 

获取长度

使用.size()方法获取整个bitset的长度。

cout << b.size();

 

转unsigned long

使用.to_ulong()方法进行数据类型的转换。(但是没有类似的.to_uint()方法)

unsigned long l = b.to_ulong();
cout << l;

 

标签:返回,下标,浅入,unsigned,C++,取反,STL,bitset,方法
From: https://www.cnblogs.com/Jianxian/p/17991382

相关文章

  • c++重载
    函数或运算符重载是指在同一作用域内定义多个具有相同名称但参数类型或数量不同的函数或运算符。重载允许使用相同的名称执行不同的操作,具体的操作根据传递给函数或运算符的参数类型或数量而定。(和Java重载一样直接和Java重载联系到一起)大致分为两类函数和运算符的重载函数重载:......
  • 【C++入门到精通】C++入门 —— list (STL)
    @TOC前言文章绑定了VS平台下std::list的源码,大家可以下载了解一下......
  • 在ubuntu22上使用C++20
    Linux系统ubuntu22.04安装最新版的gcc13.1.0编译器,支持c++20、23_gcc-13.1.0.tar.gz下载-CSDN博客ubantu20安装多个版本的gcc/gc++编译器_ubuntu安装多个gcc-CSDN博客5步在Ubuntu22上使用C++201.安装build-essentialsudoaptinstallbuild-essential安装完检查/us......
  • C++教程——初识c++(循环,判断,跳转语句)
    在程序设计中,循环语句的使用十分重要,不同的需求需要用到不同的循环语句,对各种循环语句的熟练使用是学好程序设计的关键。接下来就来介绍循环语句及其使用。对于while循环来说,注意判断条件的使用,do...while语句要注意,它至少会执行一次do中的代码块,这是需要注意到的,对于for循环来说,括......
  • KY188 哈夫曼树C++
    用(优先队列)小根堆,先构建哈夫曼树,然后在递归遍历输出WPL。 #include<iostream>#include<queue>usingnamespacestd;structnode{intdata;structnode*left;structnode*right;};typedefstructnodetree;booloperator<(treeleft,treeright){......
  • 【C++】前置声明导致的代码含义改变
    真的有这么离谱的事哈哈哈哈。//F.hstructF{};structS:F{};//User.h#include<iostream>structF;structS;structUser{voidf(F*){std::cout<<"F"<<std::endl;}voidf(void*){std::cout<<"void"<......
  • 【C++】 select函数介绍
    在使用C++语言开发网络应用程序时,常常需要用到select函数。select函数是一种多路复用机制,可以同时监听多个文件描述符上可读、可写、异常等事件,从而让程序能够高效地处理多个连接。下面详细介绍C++中的select函数。1.select函数的定义和作用select函数的定义为:intselect(intn......
  • C++ RALL机制理解
    #########################RALL机制(将资源的生命周期与对象的生命周期所绑定(构造获取资源/析构释放资源,利用了栈上的变量在离开作用域的时候会析构的特性)RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,......
  • C++ 单例模式
    单例模式写法:注意:静态成员使用指针的话,程序退出时无法指针类的析构函数,在类内添加回收单例的类,析构的时候将该单例对象析构,就可以了例如:classSingleton{public: staticSingleton*getInstance() { if(m_pInstance==nullptr)//静态成员使用指......
  • C转C++速成浅入浅出系列——STL之queue
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。queue【queue:队伍,队列】(学过数据结构的熟的不能再熟了吧)理解为队列。特点是①先入先出②只能对队伍的队首进行出队操作,对队伍的队尾进行入队操作。需提供头文件#include<queue>由于队列的......