位图 BitMap
来源:互联网 发布:php跳转id代码 编辑:程序博客网 时间:2024/06/05 17:14
看到这个名字就可以想象到位图顾名思义就是通过一个位来存储一个整型,用0和1来标记这个数存在还是不存在。
通常位图可以在内存不够、只判断数字在不在的情况下使用,节省空间。
#pragma once#include <iostream>using namespace std;#include <vector>class BitSet{public: BitSet(const size_t& range)//range数据的范围 { size_t n = (range / 32 + 1);//需要开数组大小 _bs.resize(n);//开空间,并完成初始化 } void Set(const size_t& num) { size_t index = num / 32;//表示num在第几个数 size_t pos = num % 32;//表示在那个位 //将num对应位置为1 _bs[index] |= (1<<(31-pos)); } void ReSet(const size_t& num) { size_t index = num / 32;//表示num在第几个数 size_t pos = num % 32;//表示在那个位 //将num对应位置为1 _bs[index] &= ~(1 << (31 - pos)); } bool Test(const size_t& num) { size_t index = num / 32; size_t pos = num % 32; size_t tags = _bs[index] & (1 << (31 - pos)); if (tags) return true; return false; }protected: vector<int> _bs;};//测试函数void TestBitSet(){ BitSet bs(50); bs.Set(0); bs.Set(1); bs.Set(32); bs.Set(33); cout << "0?:" << bs.Test(0) << endl; cout << "1?:" << bs.Test(1) << endl; cout << "32?:" << bs.Test(32) << endl; cout << "33?:" << bs.Test(33) << endl; cout << "35?:" << bs.Test(35) << endl; bs.ReSet(33); cout << "33?:" << bs.Test(33) << endl;}
0 0
- 位图(bitmap)
- Bitmap(位图)
- 位图Bitmap
- 《位图 - Bitmap》
- 位图 bitmap
- BitMap位图
- BitMap(位图)
- BitMap--位图
- 位图Bitmap
- 位图 BitMap
- 位图 BitMap
- 位图(bitmap)排序
- BitMap位图分析
- Bitmap位图格式探究
- WINAPI 读取位图Bitmap
- 位图结构 Bitmap Storage
- bitmap位图索引简介
- C实现bitmap位图
- 米磊博士:下一个风口就是硬科技,抓住机遇,中国能重返世界之巅
- Comet[翻译]
- 我的java学习路之选择和循环
- 好用的chrome插件:鼠标手势、阅读视图、onetab
- linux CLK时钟驱动
- 位图 BitMap
- spark报错---安装系列八
- 包含min函数的栈
- 算法导论 练习题 11.1-3
- MIME参考列表
- Bootstrap里的文件分别代表什么意思及其引用方法
- opencv---小知识记录
- Java的注释
- make命令和makefile文件