位图的实现

Posted

tags:

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

哈希和位图都能迅速的查找元素

区别在于,哈希能查找并访问元素,但空间利用率不高

而位图仅能用来判断元素是否存在

下面是位图的实现:

using namespace std;
class BitMap
{
public:
	BitMap(size_t n)
		:_size(0)
	{
		_a.resize( (n >> 5) + 1);
	}
	void Set(size_t x)
	{
		size_t index = x >> 5;
		size_t num = x % 32;
		if ((_a[index] & (1 << num)) == 0)	//不存在的话,添加并增加_size
		{
			_a[index] |= (1 << num);
			_size++;
		}
	}
	void ReSet(size_t x)
	{
		size_t index = x >> 5;
		size_t num = x % 32;
		if ((_a[index] & (1 << num)) != 0)	//存在的话,移除并减小_size
		{
			_a[index] &= ~(1 << num);
			_size--;
		}
	}
	bool Test(size_t x)
	{
		size_t index = x >> 5;
		size_t num = x % 32;
		return _a[index] & (1 << num);
	}
protected:
	vector<size_t> _a;
	size_t _size;
};


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

合并两个位图的问题

是否可以在OnStop()上回收所有数据并使用保留片段?

如何从Android片段中的相机获取图像

Android - 片段中的 getIntent()

如何在android中使用imageloader释放位图内存?

是否可以在 OnStop() 回收所有数据并使用保留片段?