位图:源代码

#include <iostream>
using namespace std;
#include <vector>

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

	BitMap(size_t len)
		:_size(0)
	{
		size_t size = len/32+1;
		_array.resize(size, 0);
	}

	void Set(size_t num)
	{
		//size_t index = num/32;
		size_t index = num>>5;
		size_t count = num%32;

		_array[index] |= 1<<count;

		++_size;
	}

	void ReSet(size_t num)
	{
		size_t index = num>>5;
		size_t count = num%32;
		_array[index] &= ~(1<<count);

		--_size;

	}

	bool Test(size_t num)
	{
		size_t index = num>>5;
		size_t count = num%32;

		return _array[index]&(1<<count);
	}

	void Clear()
	{
		_array.assign(_array.size(), 0);
		_size = 0;
	}

private:
	vector<int> _array;
	size_t _size;
};

void Test1()
{
	BitMap bm(-1);

	bm.Set(100);
	bm.Set(9999);
	bm.Set(111111);

	cout<<"100?"<<bm.Test(100)<<endl;
	cout<<"99?"<<bm.Test(99)<<endl;
	cout<<"111111?"<<bm.Test(111111)<<endl;
	cout<<"101?"<<bm.Test(101)<<endl;
	cout<<"9999?"<<bm.Test(9999)<<endl;

	bm.ReSet(100);
	cout<<"100?"<<bm.Test(100)<<endl;
}

int main()
{
	Test1();

	return 0;
}
时间: 2024-12-22 08:50:10

位图:源代码的相关文章

Android开发之大位图二次采样压缩处理(源代码分享)

图片有各种形状和大小.在许多情况下这些图片是远远大于我们的用户界面(UI)且占据着极大的内存空间,如果我们不对位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 package com.example.g08_bitmap; import android.os.Bundle; import android.app.Activity; import android.content.res.Resources; import android.graphics.Bitm

02-17 位图验证码(一般处理程序)

建立一个空网站,在设计界面工具箱中拖入一个TextBox工具,一个按钮,外加一个Image图片工具(充当数字.字母以图片形式).但是这样做出来的验证码会出现一个问题,每当点击一下按钮,界面自动提交一遍,重新刷新一遍再返回,为防止整个页面被重新提交,需要加入一个UpdatePanel,只刷新当前updatePanel内的内容即可. 界面设计好后,需要添加一个以ashx结尾的文件项,在这里面写位图随机验证码的格式等等. 1 <%@ WebHandler Language="C#" C

Android init源代码分析(2)init.rc解析

本文描述init.rc脚本解析以及执行过程,读完本章后,读者应能 (1) 了解init.rc解析过程 (2) 定制init.rc init.rc介绍 init.rc是一个文本文件,可认为它是Android系统启动脚本.init.rc文件中定义了环境变量配置.系统进程启动,分区挂载,属性配置等诸多内容.init.rc具有特殊的语法.init源码目录下的readme.txt中详细的描述了init启动脚本的语法规则,是试图定制init.rc的开发者的必读资料. Android启动脚本包括一组文件,包括

Android BitmapFactory图片压缩处理(大位图二次采样压缩处理)

Android实际开发中,在加载大量图片的时候,比如ViewPager.GridView.ListView中,加载了大量的比较大图片就容易出现OOM(内存溢出)的异常,这是因为一个应用的最大内存使用只有16M,超过了这个值,就会出现OOM.所以我们实际开发中,要想避免OOM出现就要对相应的图片进行压缩处理. 本文即使用了BitmapFactory和BitmapFactory.Option这两个类,对图片进行相应的尺寸压缩处理.经测试,成功解决了未压缩图片之前出现的OOM异常. 实现效果图: 本D

Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setContentView与LayoutInflater载入解析机制源代码分析>.然后有人在文章以下评论和微博私信中问我关于Android应用Activity.Dialog.PopWindow载入显示机制是咋回事,所以我就写一篇文章来分析分析吧(本文以Android5.1.1 (API 22)源代码为基础分析),以

linux内核中的位图

    位图(bitmap)是一种非常有用的数据结构,在处理系统中的进程数管理.磁盘中的磁盘块管理.以及内存中的内存页的使用情况管理时非常有用.     同时在内核中对位图进行各种操作,现在总结一些常用的操作,以便在以后用到时方便回顾.     几个常用的宏定义:     #define BIT_PER_TYPE 8      #define __WORDSIZE   32     #define BITS_PER_LONG  __WORDSIZE     #define DIV_ROUND_U

【数字图像】C++8位和24位BMP位图的平滑、锐化、二值化处理,以及24位真彩图的灰度化

头文件: typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int DWORD; typedef long LONG; //BMP文件头(14字节) typedef struct tagBITMAPFILEHEADER { //WORD bfType;//位图文件的类型,必须为BM(在结构体中读取会发生错误,所以在函数中读取) DWORD bfSize;//位图文件的大小,以字节为单位 WORD b

即时通讯源代码,im源码功能全套

即时通讯源代码, im源码, im源代码 即时通讯全套源码语言:C/C++ 语言编写,VC++开发平台产品包含完善的即时通讯系统,是一套集即时通讯和视频会议为一体的企业级办公协同交流产品,可以广泛应用于政府.企业.教育机构和公司等客户端:大致功能(具体以产品演示为准):在线文字聊天 离线留言 历史消息记录查询 公告消息提醒 语音聊天 视频聊天群发留言 输入状态感知个性签名 更换皮肤多人文字会议 协同WEB浏览即时截屏 多人视频会议多人语音会议 自定义头像 在线文件传输 离线文件传输远程控制 个个

【转】libjpeg实现内存位图的压缩及解压缩-显示格式有问题

相信使用过的朋友应该会喜欢上libjpeg,它简单易用.压缩质量可以随意控制.并且稳定性很好,但是,官方网站给提供的libjpeg库, 不论是进行压缩时还是解压缩时,都需要用到FILE,使得我们如果想在内存中直接压缩或解压缩图像还要自己实现相应的结构, 总之,比较麻烦,尤其对初学者,更是不知从何处入手,幸运的是,libjpeg给我们提供了源代码,今天我就为大家介绍,怎样修改源代码, 使libjpeg可以非常容易的直接处理内存中的图像,而无需借助文件操作. 一.建立自己的libjpeg工程