c++11 标准模板(STL)(std::bitset)(六)

news2024/12/25 0:58:19
定义于头文件 <bitset>

template< std::size_t N >
class bitset;

 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集,并将它与字符串和整数相互转换。

bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssignable) 的要求。

模板形参

N-要为 bitset 分配存储的位数

成员类型

reference

表示到一个位的引用的代理类
(类)

非成员函数

在 bitset 上执行二元逻辑操作

operator&,|,^(std::bitset)

template< std::size_t N >
bitset<N> operator&( const bitset<N>& lhs, const bitset<N>& rhs );

(1)(C++11 前)

template< std::size_t N >
bitset<N> operator&( const bitset<N>& lhs, const bitset<N>& rhs ) noexcept;

(C++11 起)

template< std::size_t N >
bitset<N> operator|( const bitset<N>& lhs, const bitset<N>& rhs );

(2)(C++11 前)

template< std::size_t N >
bitset<N> operator|( const bitset<N>& lhs, const bitset<N>& rhs ) noexcept;

(C++11 起)

template< std::size_t N >
bitset<N> operator^( const bitset<N>& lhs, const bitset<N>& rhs );

(3)(C++11 前)

template< std::size_t N >
bitset<N> operator^( const bitset<N>& lhs, const bitset<N>& rhs ) noexcept;

(C++11 起)

 进行二个 bitset lhsrhs 间的二进制与、或及异或。

1) 返回含 lhsrhs 的位对应对上的二进制与结果的 bitset<N>

2) 返回含 lhsrhs 的位对应对上的二进制或结果的 bitset<N>

3) 返回含 lhsrhs 的位对应对上的二进制异或结果的 bitset<N>

参数

lhs-运算符左侧的 bitset
rhs-运算符右侧的 bitset

返回值

1) bitset<N>(lhs) &= rhs

2) bitset<N>(lhs) |= rhs

3) bitset<N>(lhs) ^= rhs

执行 bitset 的流输入和输出

operator<<,>>(std::bitset)
template <class CharT, class Traits, size_t N>

std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os,

                                              const bitset<N>& x);
(1)
template <class CharT, class Traits, size_t N>

std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is,

                                              bitset<N>& x);
(2)

从字符流插入或释出 bitset 。

1) 写 bitset x 入字符流 os ,如同首先用 to_string() 将它转换成 basic_string<CharT,Traits> ,再用 operator<< (对字符串是有格式输出函数 (FormattedOutputFunction) )将它写入 os 。为一与零使用的字符,通过以 '1' 和 '0' 为参数调用 std::use_facet<std::ctype<CharT>(os.getloc()).widen() 从当前感染的本地环境获得。

2) 表现为有格式输入函数 (FormattedInputFunction) 。构造并检查 sentry 对象,这可能跳过前导空白符,之后从 is 释出至多 N 个字符,并存储字符于 bitset x

释出字符直至

  • 已读取 N 个字符
  • 文件尾发生于 is ,或
  • 下个字符既非 is.widen('0') 亦非 is.widen('1')

N > 0 且未释出字符,则调用 is.setstate(ios_base::failbit)

参数

os-要写入的字符流
is-要读取的字符流
x-要读取或写入的 bitset

返回值

操作于上的字符流,例如 osis

调用示例

#include <iostream>
#include <bitset>
#include <string>
#include <sstream>

template<size_t _Nb>
void printBitset(const std::string &name, const std::bitset<_Nb> &bitset)
{
    std::cout << name << ":  ";
    for (size_t index = 0; index < bitset.size(); index++)
    {
        std::cout << bitset[index] << " ";
    }
    std::cout << std::endl;
}

int main()
{
    std::cout << std::boolalpha;

    //进行二个 bitset lhs 和 rhs 间的二进制与、或及异或。
    std::bitset<8> bitset1("101010");
    std::bitset<8> bitset2("100011");
    std::cout << "bitset1:              " << bitset1 << std::endl;
    std::cout << "bitset2:              " << bitset2 << std::endl;
    //1) 返回含 lhs 和 rhs 的位对应对上的二进制与结果的 bitset<N> 。
    std::cout << "bitset1 & bitset2:    " << (bitset1 & bitset2) << std::endl;
    //2) 返回含 lhs 和 rhs 的位对应对上的二进制或结果的 bitset<N> 。
    std::cout << "bitset1 | bitset2:    " << (bitset1 | bitset2) << std::endl;
    //3) 返回含 lhs 和 rhs 的位对应对上的二进制异或结果的 bitset<N> 。
    std::cout << "bitset1 ^ bitset2:    " << (bitset1 ^ bitset2) << std::endl;
    std::cout << std::endl;

    //从字符流插入或释出 bitset 。
    std::string bit_string = "001101";
    std::istringstream bit_stream(bit_string);
    //1) 写 bitset x 入字符流 os ,如同首先用 to_string() 将它转换成 basic_string<CharT,Traits> ,
    //再用 operator<< (对字符串是有格式输出函数 (FormattedOutputFunction) )将它写入 os 。
    std::bitset<3> bitset3;
    bit_stream >> bitset3; // 读取 "001" ,流仍保有 "101"
    std::cout << "bitset3:              " << bitset3 << std::endl;
    //2) 表现为有格式输入函数 (FormattedInputFunction) 。
    //构造并检查 sentry 对象,这可能跳过前导空白符,之后从 is 释出至多 N 个字符,并存储字符于 bitset x 。
    std::bitset<8> bitset4;
    bit_stream >> bitset4; // 读取 "101" ,产出 8 位集为 "00000101"
    std::cout << "bitset4:              " << bitset4 << std::endl;

    return 0;
}

输出

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

港科夜闻|海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研。香港科大(广州)临时党委书记屈哨兵从政治建设、思想建设、组织建设、制度建设及工作机制等方面&#xff0c;为曹献坤书记详细介绍了学校的党建工作体系构建&…

C盘爆了怎么办

一、删除大文件 关闭hiberfil.sys功能 关闭hiberfil.sys功能&#xff08;系统休眠时才会用到&#xff09; 管理员身份运行cmd 输入如下命令 powercfg.exe -h off移动pagefile.sys 这是虚拟内存文件,不建议删除&#xff0c;可以移动 右击此电脑->属性->高级系统设置 …

被吐槽,苹果挤牙膏式发布会,跟微信产品迭代如出一辙

大家好&#xff0c;我是校长。 今天一大早醒来&#xff0c;苹果发布会&#xff0c;毫无意外&#xff0c;在 iOS 系统更新迭代方面&#xff0c;可谓是乏善可陈&#xff0c;毫无新意。 当然了&#xff0c;被吐槽也就在情理之中了。 很多人说 iOS17 的最大变化&#xff0c;就是没有…

ISO21434 产品开发网络安全(七)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 4.1 设计 4.2 集成和验证 五、输出 一、概述 本条款描述了网络安全要求和架构设计的规范&#xff08;章节10.4.1&#xff09;。 此外&#xff0c;本子句还描述了集成和验证活动&…

Yakit: 集成化单兵安全能力平台使用教程·反连管理篇

Yakit: 集成化单兵安全能力平台使用教程反连管理篇 1.端口监听器2.DNSlog3.反连服务器4.ICMP-Sizelog5.TCP-Portlog6.Yso-Java Hack1.端口监听器 反弹 Shell 的接收工具,利用端口监听器可以在服务器上开启一个端口,进行监听,并进行交互 输入想要监听的端口,点击监听该端口…

直播抽奖功能(互动功能接收端JS-SDK)

功能概述 本模块主要用于处理抽奖相关的逻辑&#xff0c;可以对抽奖开始和抽奖结束等事件进行监听以及提交观众中奖信息&#xff0c;接入方可以根据这些事件流程定制自己的UI界面。 抽奖--效果截图 抽奖--效果截图 初始化及销毁 在实例化该模块并进行使用之前&#xff0c;需要…

Shell脚本:for循环

shell脚本-for循环 一、for循环&#xff1a;1.格式&#xff1a;2.实操&#xff1a;3.类c语言&#xff1a; 一、for循环&#xff1a; 1.格式&#xff1a; &#xff08;1&#xff09;for 已知的循环次数场景 for 变量名 in 【 名称范围 】 do 命令序列&#xff08;执行内容&…

Vue+springboot美发美容化妆品产品商城系统

不同的游客可以注册成为用户&#xff0c;然后可以查看&#xff0c;搜索自己想买的美发产品&#xff0c;加入购物车&#xff0c;下订单&#xff0c;收货&#xff0c;确认付款等购物流程。前台和后台的分析使得该系统结构清晰&#xff0c;即包含管理员和用户两个最基本的实体&…

C++递推基本概念和基础知识

目录 一、递推的概念 什么是递推算法&#xff1f; 解决递推问题的一般形式 二、递推和递归的区别 三、递推的实例 一、递推的概念 什么是递推算法&#xff1f; “递推”是计算机解题的一种常用方法。利用“递推法”解题首先要分析归纳出“递推关系”。如经典的斐波那契数…

MIT 6.824 lab distributed system 分布式系统(1)----lab1 MapReduce

https://youtu.be/cQP8WApzIQQ 概念 为什么需要分布式系统&#xff1f; high performanceparallelism&#xff1a;分布式系统可以实现CPU、内存、硬盘的并行运行fault tolerancephysical&#xff1a;security / isolated 分布式系统的困难 concurrency&#xff1a;各个并行的…

【观察】金融行业决策智能化“换挡提速” 华为全球智慧金融峰会2023值得期待...

当前以数字化、智能化为特征的第四次工业革命正“扑面而来”&#xff0c;数字经济浪潮对各行各业都产生着深刻影响。其中&#xff0c;金融行业作为现代经济的核心&#xff0c;也面临着一系列重大的挑战和机遇。 相比于其他企业&#xff0c;金融行业依靠数据分析和智能决策更好地…

某公司招了一个大专生,候选人要一万月薪,HR给申请一万二,HR领导说:给一万三!...

无良公司看多了&#xff0c;不禁让人怀疑&#xff1a;这个世界上还有好公司和好hr吗&#xff1f; 来看看这位hr的故事&#xff1a; 最近我们招了一个大专生&#xff0c;5年经验。他的工资是7000&#xff0c;候选人想要10000&#xff0c;我给申请了12000&#xff0c;结果审批不通…

用于分析脉冲类信号的二阶瞬态提取变换研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【TCP/IP】基于TCP的服务器端/客户端 II - 迭代服务器/客户端的概念与实现

1. 迭代服务器端/客户端 1.1 迭代服务器实现 1.2 迭代回声服务器端/客户端 2 回声客户端存在的缺陷 1. 迭代服务器端/客户端 在此之前&#xff0c;让我们先补充一个“回声服务器/客户端”的概念。回声&#xff08;echo&#xff09;服务器/客户端是指服务器端将客户端传输的字…

干货 | 郭晓雷:数智安全监管机制研究与思考

作者&#xff1a;郭晓雷本文约4300字&#xff0c;建议阅读8分钟 本文报告的主要内容关于数据安全&#xff0c;从学术或者技术的角度&#xff0c;更多地认为人工智能是数据处理的新技术&#xff0c;其应用会产生更加丰富的数据处理活动场景。 郭晓雷&#xff1a;今天报告的主要内…

【U8+】用友U8查询出库汇总表没有“计量单位”列

【问题描述】 在用友U8软件中&#xff0c; 查询存货核算模块下的【出库汇总表】后&#xff0c; 没有【计量单位】列&#xff0c; 但是汇总依据中&#xff0c;可以明显看到是包含“计量单位”的。 【解决方法】 首先明确一点&#xff0c;在查询条件中的【汇总依据及排序方式】…

可再生能源的不确定性和储能系统的时间耦合的鲁棒性和非预期性区域微电网的运行可行性研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

4.Python高频函数—数据分割split()

这里是针对dataframe 的数据的列中的字符串进行分割、分列&#xff0c;首先需要先用.str将这一列转换为类似字符串的格式&#xff0c;然后再使用split()方法。 Part.1 split()函数 根据分隔符或正则表达式对字符串进行拆分&#xff1b;返回数据框&#xff08;DataFrame&#x…

位运算总结

位运算 有符号整数无符号整数位移运算 1计算机中数字的表示 计算机只有0&#xff0c;1两个数字&#xff0c;所以我们常用的10进制计算 所以我们需表示10进制 要使用二进制来表示10进制数 进制表示法 我们假设一个 8 位的数据类型 方案1 2&#xff1a;0000 0010 我们会发现…

FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 绪论 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一&#xff0c;因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此&#xff0c;在这个关于 FPGA 上 DSP 基础…