`

C++_STL_bitset的使用

    博客分类:
  • C++
 
阅读更多
/*
STL 中bitset的使用。

member functions: 
· bitset::any : 判断bitset里面是否有1; 有,返回true,否则返回false;
· bitset::count :计算一个bitset里面有几个1, 通过bitset:size()-bitset:count()可以得到有几个0;
· bitset::flip : 取反函数,可以带参数,bitset:flip( pos )表示将第pos位取反,pos从0开始,且表示从bitset右边开始数,可以不带参数,直接bitset:flip()表示将所有位取反;
· bitset::none : 判断bitset是否全部为0,若全部为0,返回true,否则,返回false;此函数和bitset::all相反;
· bitset::operator[] : 表示[]的使用,即bitset也可以看成一个数组,可以通过bitset[n]来取得第n位的值,或者对其进行赋值; 
· bitset::reset : 置0函数,可以带参数,bitset:reset( pos )表示将第pos位置为0,pos从右边开始,从0开始,不带参数,表示将所有位置0;
· bitset::set : 置1函数,可以带参数,bitset:set( pos, val )表示将第pos位置为val,val可以为1或者0,不带参数,则默认将所有位置为1;
· bitset::size :表示取得bitset的长度;
· bitset::test : 要带参数,bitset:test( pos )表示测试第pos位是否为1,若为1,返回true,否则返回false;此函数中用到boolalpha, 使用cout<<boolalpha;之后,后面的输出就会用true和false代替默认的1和0;
· bitset::to_string : 将bitset转换为string,带参数,有三个参数,具体见函数;
· bitset::to_ulong : 将bitset转换为unsigned long;
· bitset::to_ullong : 将bitset转换为unsigned long long;(此函数实现省略)
· bitset::at : 带参数,bitset:at( pos )表示取得第pos位的值,pos从0开始,从右边开始;
· bitset::all : 不带参数,判断bitset是否全部为1,若全部为1,返回true,否则返回false;此函数和bitset::none相反;

*/
#include <iostream>
#include <bitset>
using namespace std;

void my_bitset_any();
void my_bitset_count();
void my_bitset_flip();
void my_bitset_none();
void my_bitset_operator();
void my_bitset_reset();
void my_bitset_set();
void my_bitset_size();
void my_bitset_test();
void my_bitset_to_string();
void my_bitset_to_ulong();
void my_bitset_at();
void my_bitset_all();

int main()
{
	//my_bitset_any();
	//my_bitset_count();
	//my_bitset_flip();
	//my_bitset_none();
	//my_bitset_operator();
	//my_bitset_reset();
	//my_bitset_set();
	//my_bitset_size();
	//my_bitset_test();
	//my_bitset_to_string();
	//my_bitset_to_ulong();
	//my_bitset_at();
	//my_bitset_all();

	system("pause");
	return 0;
}

// bitset::any
void my_bitset_any()
{
	bitset<16> mybits;

	cout << "enter a binary number: ";
	cin >> mybits;

	if (mybits.any())
		cout << "mybits has " << (int)mybits.count() << " bits set.\n";
	else
		cout << "mybits has no bits set.\n";
}

// bitset::count
void my_bitset_count()
{
	bitset<8> myset (string("10110011"));

	cout << "myset has " << int(myset.count()) << " ones ";
	cout << "and " << int(myset.size()-myset.count()) << " zeros.\n";
}

//bitset::flip
void my_bitset_flip()
{
	bitset<4> mybits (string("0001"));

	cout << mybits.flip(2) << endl;     // 0101
	cout << mybits.flip() << endl;      // 1010
}

// bitset::none
void my_bitset_none()
{
	bitset<16> mybits;

	cout << "enter a binary number: ";
	cin >> mybits;

	if (mybits.none())
	cout << "mybits has no bits set.\n";
	else
	cout << "mybits has " << (int)mybits.count() << " bits set.\n";
}

// bitset::operator[]
void my_bitset_operator()
{
	bitset<4> mybits;

	mybits[1]=1;             // 0010
	mybits[2]=mybits[1];     // 0110

	cout << "mybits: " << mybits[2] << endl; 
}

// bitset::reset
 void my_bitset_reset()
 {
	bitset<4> mybits (string("1011"));

	cout << mybits.reset(1) << endl;    // 1001
	cout << mybits.reset() << endl;    // 0000
 }

// bitset::set
void my_bitset_set()
{
	bitset<4> mybits;

	cout << mybits.set() << endl;       // 1111
	cout << mybits.set(2,0) << endl;    // 1011
	cout << mybits.set(2,1) << endl;    // 1111
	cout << mybits.set(2) << endl;      // 1111
}

// bitset::size
void my_bitset_size()
{
	bitset<8> first;
	bitset<4> second;

	cout << "first.size() is " << (int) first.size() << endl;
	cout << "second.size() is " << (int) second.size() << endl;

}

// bitset::test
void my_bitset_test()
{
	bitset<5> mybits (string("01011"));

	cout << "mybits contains:\n";
	cout << boolalpha;
	for (size_t i=0; i<mybits.size(); ++i)
		cout << mybits.test(i) << endl;

}

// bitset::to_string
void my_bitset_to_string()
{
	string mystring;
	bitset<29> mybits;     // mybits: 0000

	mybits.set();         // mybits: 1111

	mystring=mybits.to_string<char,char_traits<char>,allocator<char> >();

	cout << "mystring: " << mystring << endl;
}

// bitset::to_ulong
void my_bitset_to_ulong()
{
	bitset<4> mybits;     // mybits: 0000

	mybits.set();         // mybits: 1111

	cout << mybits << " as an integer is: " << mybits.to_ulong() << endl;
}

// bitset::at
void my_bitset_at()
{
	bitset<5> mybits (string("01011"));     // mybits: 0000

	cout<<mybits.at(1);
}

// bitset::all
void my_bitset_all()
{
	bitset<5> mybits (string("11111"));     

	cout<<mybits.all();
}

 

分享到:
评论

相关推荐

    动态Bitset源代码

    在C++的STL中实现由一个bitset类模板,其用法如下: std::bitset&lt;64&gt; bs; 也就是说,这个bs只能支持64位以内的位存储和操作;bs一旦定义就不能动态增长了。本资源附件中实现了一个动态Bitset,和标准bitset兼容。 /*...

    C++ STL程序员面试题

    理解并熟练使用STL是C++程序员必备的技能之一,它能帮助编写出高效、可读性强的代码。在面试中,对STL的深入理解不仅可以展示你的技术实力,还能表现出你对编程最佳实践的追求。因此,熟悉STL的各个部分并能够灵活...

    STL.rar_STL

    **STL(Standard Template Library)**,中文名为标准模板库,是C++编程语言中一个极其重要的组成部分。它提供了一组高效、灵活且可重用的容器、算法和迭代器,使得开发者能够更加便捷地进行数据结构和算法的实现。...

    CRC.zip_C++_visual c++_zip

    在Visual C++中,开发者通常会使用标准模板库(STL)或者其他第三方库来辅助实现CRC。例如,可以使用`bitset`类来处理二进制数据,或者使用`vector`来存储大量数据。此外,可能会涉及到自定义函数或类来完成CRC计算...

    【STL源代码】C++标准库STL源代码下载

    STL,全称为Standard Template Library,是C++标准库的核心部分,它提供了一组高效、通用的容器、迭代器、算法和函数对象。在【STL源代码】中,我们可以深入学习并理解这些组件的实现细节,从而提高编程技能和效率。...

    【c++ Stl教程】stl使用及stl编程

    5. 特殊容器:除了基本的容器外,STL还提供了其他特殊容器,如队列(Queue)、栈(Stack)、优先队列(Priority Queue)和位集(Bitset)。它们分别实现了FIFO(先进先出)、LIFO(后进先出)以及基于优先级的存储...

    C++STL源码PJ版

    《C++ STL源码PJ版》是一份专为C++初学者设计的学习资源,旨在帮助他们深入了解和掌握C++标准模板库(STL)的使用技巧。STL是C++编程中不可或缺的一部分,它提供了高效的数据结构和算法,极大地提高了程序员的生产力...

    C++中STL使用总结

    本文将总结C++中STL的使用,涵盖vector、stack、queue等常用容器。 一、vector向量容器 Vector是一种可以动态扩展的数组,它支持快速的随机访问,并允许在序列末尾插入和删除元素。 1. 创建vector对象:不指定...

    C++ - SGI 版本 STL源码

    **C++ SGI版STL源码详解** STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了高效且灵活的数据结构和算法。SGI(Silicon Graphics, Inc.)公司在90年代为C++社区贡献了一...

    C++STL手册.rar

    C++ STL 手册是一份宝贵的资源,它详尽地介绍了每个组件的使用方法、接口和注意事项。通过查阅该手册,开发者能够更深入地理解 STL,并在项目中有效地利用其功能。学习和掌握 STL 是 C++ 程序员必备的技能之一,对于...

    C++ STL源码

    All of the STL except for the , &lt;bitset&gt;, and &lt;valarray&gt; headers has also been tested on Borland 5.02. It should not be difficult to use the STL with other compilers that have good support for ...

    C++ STL标准库

    C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效且灵活的容器、算法和迭代器,极大地提高了程序员的生产力和代码的可复用性。引用候捷老师的名言“源码之前,...

    C++开源项目:模拟实现小型STL

    STL,全称为Standard Template Library(标准模板库),是C++编程中不可或缺的一部分,它包含了一系列高效、可重用的数据结构和算法。本开源项目旨在模拟实现一个小型STL,帮助开发者更深入地理解STL的工作原理和...

    可以动态扩展的bitset

    文档模仿STL库的BITSET写的一个bitset,但是和STL不同的是这个类是一个可以动态扩展的,使用方法和STL的类似,可以参考STL使用

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常….zip

    c++ stl 开发技术导引

    《C++ STL 开发技术导引》是一本深入讲解C++ Standard Template Library(STL)的书籍,由叶至军编著。STL是C++编程中不可或缺的一部分,它为程序员提供了高效、可重用的容器、算法和迭代器等组件,极大地提高了代码...

    C++下bitset简介

    `bitset`是C++标准库的一部分,属于STL(Standard Template Library),它提供了高效且易用的方法来管理一组位。在编程中,特别是在处理大量独立的布尔状态时,`bitset`能显著降低内存占用,提高效率。 首先,`...

    STL_资料(袁辉勇_整理)

    尽管最初并不是为C++设计的,但自C++标准采纳STL以来,它已成为C++编程不可或缺的一部分。 **STL**的核心组件包括: 1. **算法**(Algorithm) 2. **容器**(Container) 3. **迭代器**(Iterator) 这些组件通过...

    C++STL实验报告-容器的使用(2)

    在本篇"C++ STL实验报告-容器的使用(2)"中,我们将深入探讨C++标准模板库(Standard Template Library,简称STL)中的几种重要容器:link(链表)、队列、栈、优先队列以及bitset,并通过一系列实例来实践它们的...

Global site tag (gtag.js) - Google Analytics