C++实现位图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现位图相关的知识,希望对你有一定的参考价值。

#pragma once

#include <vector>

class BitMap
{
public:
	BitMap()
		:_size(0)
	{}

	void Resize(size_t size)
	{
		_a.resize((size>>5) + 1);
	}

	void Set(size_t x)
	{
		size_t index = x>>5;
		size_t n = x % 32;

		_a[index] |= (1<<n);

		++_size;
	}

	void Reset(size_t x)
	{
		size_t index = x>>5;
		size_t n = x % 32;

		_a[index] &= (~(1<<n));

		--_size;
	}

	bool Test(size_t x)
	{
		size_t index = x>>5;
		size_t n = x % 32;

		return _a[index] & (1<<n);
	}

	size_t Size()
	{
		return _size;
	}

protected:
	vector<size_t> _a;
	size_t _size;
};


void BitMapTest()
{
	BitMap bitmap;
	bitmap.Resize(65);
	bitmap.Set(65);
	bitmap.Set(1);
	bitmap.Set(4);
	bitmap.Set(45);

	cout<<"65?"<<bitmap.Test(65)<<endl;
	cout<<"1?"<<bitmap.Test(1)<<endl;
	cout<<"4?"<<bitmap.Test(4)<<endl;
	cout<<"45?"<<bitmap.Test(45)<<endl;
	cout<<"25?"<<bitmap.Test(25)<<endl;

	cout<<endl<<"Reset(65)"<<endl;
	bitmap.Reset(65);
	cout<<"65?"<<bitmap.Test(65)<<endl;

	cout<<endl<<"Size:"<<bitmap.Size()<<endl;
}
#include <iostream>
using namespace std;
//#include "HashTablesBucket.h"
#include "BitMap.h"
int main()
{
	//TestDic();
	//Test();
	BitMapTest();

	return 0;
}

技术分享

本文出自 “zgw285763054” 博客,请务必保留此出处http://zgw285763054.blog.51cto.com/11591804/1786883

以上是关于C++实现位图的主要内容,如果未能解决你的问题,请参考以下文章

C++ 位图及位图的实现

C++ 位图及位图的实现

C++进阶第二十三篇——位图(概念+实现)

C++进阶第二十三篇——位图(概念+实现)

c++——海量数据处理各种面试题(位图的实现和应用,布隆过滤器的应用,哈希切分)

用于位图管理的 C++ STL 类