C++STL实验之bitset容器的应用

本文介绍了如何在C++中使用bitset类来统计职工的上班天数,通过实例展示了如何初始化、操作bitset以及利用count函数获取1的个数。实验成功并详细列出了bitset的常用构造、逻辑运算和其他操作方法。
摘要由CSDN通过智能技术生成

实验目的:

1.了解bitset的实现原理

2.熟练掌握bitset的基本操作

实验器材:

C++

实验内容:

统计职工上班天数

实验步骤:

#include<iostream>

#include<vector>

#include<bitset>

using namespace std;

class Month

{

    string m_name;

    bitset<31> bit;

    int num;

//    bit(8);

//    bit(stirng(10001000)); 初始化方法

public:

    Month(string n,string b):bit(b),m_name(n){}

    void m_cal()

    {

        num=bit.count();

    }

    void show()

    {

        cout<<m_name<<" "<<bit.to_string()<<" "<<num<<" "<<endl;

    }

};

class Manage

{

    string name;

    vector<Month> v;

public:

    Manage(string n){name=n;}

    void add(Month m)

    {

        v.push_back(m);

    }

    void cal()

    {

        vector<Month>::iterator i=v.begin();

        for(;i!=v.end();i++)

            i->m_cal();

    }

    void disp()

    {

        cout<<name<<endl;

        vector<Month>::iterator i=v.begin();

        for(;i!=v.end();i++)

            i->show();

    }

} ;

int main()

{

    Month m1("一月",string("111001000"));

    Month m2("二月",string("111000011"));

    Manage m("张三");

    m.add(m1); m.add(m2);

    m.cal();

    m.disp();

    return 0;

}

实验结果(附数据和图表):

实验结果分析及结论:

实验成功,成功的利用二进制容器统计了职工的上班天数。

利用count函数统计1的个数完成实验要求。

实验心得体会和建议:

bitset常用函数:

1、构造、赋值函数

bitset()

bitset(const bitset&) ;拷贝构造函数

bitset(unsigned long val);由无符号长整形数构建位容器

bitset(const string& str, size_t pos=0, size_t n=-1);由字符串创建位容器,从pos开始,截取n个

bitset& operator=(const bitset&): 赋值操作

2、逻辑运算(与、或、非)

bitset& operator&=(const bitset&)

bitset& operator|=(const bitset&)

bitset& operator^=(const bitset&)

bitset& operator<<=(size_t)

bitset& operator>>=(size_t)

bitset operator<<(size_t n) const

bitset operator>>(size_t n) const

bitset operator&(const bitset&, const bitset&)

bitset operator|(const bitset&, const bitset&)

bitset operator^(const bitset&, const bitset&)

3、其它操作函数

string toString() ;位容器内容转化成字符串,方便显示

size_t size() const ;返回位容器大小

size_t count() const ;返回设置1位个数

bool any() const ;是否有位设置1

bool none() const ;是否没有位设置1

bool test(size_t n) const ;测试某位是否为1

bool operator[](size_t n) const ;随机访问位元素

unsigned long to_ulong() const ;若没有溢出异常,返回无符号长整形数

bitset& set() ;位容器所有位置1

bitset& flip() ;位容器所有位翻转

bitset& reset() ;位容器所有位置0

bitset& set(size_t n, int val = 1) ;设置某位为1或0,缺省1

bitset& reset(size_t n); ;复位某位为0

bitset flip(size_t n); ;翻转某位

实验评价及结论:

实验指导老师签字:                                      年   月  日

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LucianaiB

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

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

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

打赏作者

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

抵扣说明:

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

余额充值