/* 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(); }
相关推荐
在C++的STL中实现由一个bitset类模板,其用法如下: std::bitset<64> bs; 也就是说,这个bs只能支持64位以内的位存储和操作;bs一旦定义就不能动态增长了。本资源附件中实现了一个动态Bitset,和标准bitset兼容。 /*...
理解并熟练使用STL是C++程序员必备的技能之一,它能帮助编写出高效、可读性强的代码。在面试中,对STL的深入理解不仅可以展示你的技术实力,还能表现出你对编程最佳实践的追求。因此,熟悉STL的各个部分并能够灵活...
**STL(Standard Template Library)**,中文名为标准模板库,是C++编程语言中一个极其重要的组成部分。它提供了一组高效、灵活且可重用的容器、算法和迭代器,使得开发者能够更加便捷地进行数据结构和算法的实现。...
在Visual C++中,开发者通常会使用标准模板库(STL)或者其他第三方库来辅助实现CRC。例如,可以使用`bitset`类来处理二进制数据,或者使用`vector`来存储大量数据。此外,可能会涉及到自定义函数或类来完成CRC计算...
STL,全称为Standard Template Library,是C++标准库的核心部分,它提供了一组高效、通用的容器、迭代器、算法和函数对象。在【STL源代码】中,我们可以深入学习并理解这些组件的实现细节,从而提高编程技能和效率。...
5. 特殊容器:除了基本的容器外,STL还提供了其他特殊容器,如队列(Queue)、栈(Stack)、优先队列(Priority Queue)和位集(Bitset)。它们分别实现了FIFO(先进先出)、LIFO(后进先出)以及基于优先级的存储...
《C++ STL源码PJ版》是一份专为C++初学者设计的学习资源,旨在帮助他们深入了解和掌握C++标准模板库(STL)的使用技巧。STL是C++编程中不可或缺的一部分,它提供了高效的数据结构和算法,极大地提高了程序员的生产力...
本文将总结C++中STL的使用,涵盖vector、stack、queue等常用容器。 一、vector向量容器 Vector是一种可以动态扩展的数组,它支持快速的随机访问,并允许在序列末尾插入和删除元素。 1. 创建vector对象:不指定...
**C++ SGI版STL源码详解** STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了高效且灵活的数据结构和算法。SGI(Silicon Graphics, Inc.)公司在90年代为C++社区贡献了一...
C++ STL 手册是一份宝贵的资源,它详尽地介绍了每个组件的使用方法、接口和注意事项。通过查阅该手册,开发者能够更深入地理解 STL,并在项目中有效地利用其功能。学习和掌握 STL 是 C++ 程序员必备的技能之一,对于...
All of the STL except for the , <bitset>, and <valarray> 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(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效且灵活的容器、算法和迭代器,极大地提高了程序员的生产力和代码的可复用性。引用候捷老师的名言“源码之前,...
STL,全称为Standard Template Library(标准模板库),是C++编程中不可或缺的一部分,它包含了一系列高效、可重用的数据结构和算法。本开源项目旨在模拟实现一个小型STL,帮助开发者更深入地理解STL的工作原理和...
文档模仿STL库的BITSET写的一个bitset,但是和STL不同的是这个类是一个可以动态扩展的,使用方法和STL的类似,可以参考STL使用
本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常….zip
《C++ STL 开发技术导引》是一本深入讲解C++ Standard Template Library(STL)的书籍,由叶至军编著。STL是C++编程中不可或缺的一部分,它为程序员提供了高效、可重用的容器、算法和迭代器等组件,极大地提高了代码...
`bitset`是C++标准库的一部分,属于STL(Standard Template Library),它提供了高效且易用的方法来管理一组位。在编程中,特别是在处理大量独立的布尔状态时,`bitset`能显著降低内存占用,提高效率。 首先,`...
尽管最初并不是为C++设计的,但自C++标准采纳STL以来,它已成为C++编程不可或缺的一部分。 **STL**的核心组件包括: 1. **算法**(Algorithm) 2. **容器**(Container) 3. **迭代器**(Iterator) 这些组件通过...
在本篇"C++ STL实验报告-容器的使用(2)"中,我们将深入探讨C++标准模板库(Standard Template Library,简称STL)中的几种重要容器:link(链表)、队列、栈、优先队列以及bitset,并通过一系列实例来实践它们的...