位操作bitset与vector

    bitset类模板支持有效的的固定大小位设置操作,vector<bool>模板规范支持动态大小的位字符串。

        bitset应用举例(从右到左读入位数)

#include <iostream>

#include <bitset>

#include <string>



using namespace std;



const size_t NBITS = 36;

void print(const bitset<NBITS>&);



main()

{

	bitset<NBITS> b;

	cout.setf(ios::boolalpha);

	int i; 



	//偶数位置位

	for (i=0; i<b.size(); i+=2)

		b.set(i);

	print(b);



	//高位取反

	for (i=b.size()/2; i<b.size(); ++i)

		b.flip(i);

	print(b);



	//复位低位

	for (i=0; i<b.size()/2; ++i)

		b.reset(i);

	print(b);



	//读一个位字符串

	cout << "Enter a bit string:";

	string s;

	cin >> s;

	bitset<NBITS> b2(s);

	print(b2);



	//测试any()和 test()

	cout << "any?" << b2.any() << endl;

	cout << "test(0)?" << b2.test(0) << endl;

	

	//取反,复位和置位

	b2.flip();

	print(b2);

	b2.reset();

	print(b2);

	b2.set();

	print(b2);

}



void print(const bitset<NBITS>& b)

{

	cout << b.to_string() << "(" << b.count() << ")/n";

}

    vector<bool>应用举例(从左到右读入位数)
#include <iostream>

#include <vector>

#include <string>

#include <algorithm>



using namespace std;



void print_alpha(const vector<bool>&);

void print_digits(const vector<bool>&);



main()

{

	vector<bool> b;



	//增加

	b.resize(4); //"0000"

	b[0] = 1; //"1000"

	b[3] = true; //"1001"



	//按布尔值打印

	print_alpha(b);



	//用数字打印

	print_digits(b);



	//在前面插入更多(以LIFO顺序)

	for (int i=0; i<5;++i)

		b.insert(b.begin(),bool(i%2));

	print_digits(b);



	//单独位的存取

	b[1] = false;

	b[2] = 0;



	print_digits(b);



	//调整大小

	b.resize(5);

	print_digits(b);

}



void print_alpha(const vector<bool>& b)

{

	cout.setf(ios::boolalpha);

	copy(b.begin(),b.end(),ostream_iterator<bool>(cout,""));

	cout << endl;

}



void print_digits(const vector<bool>& b)

{

	cout.unsetf(ios::boolalpha);

	copy(b.begin(),b.end(),ostream_iterator<bool>(cout,""));

	cout << endl;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值