使用bitset应注意的问题
来源:互联网 发布:旺铺 和淘宝区别 编辑:程序博客网 时间:2024/05/18 02:09
template <size_t N> class bitset;
1、同数组一样,N为bitset的类型的一部分,N必须为编译时常量。
2、同数组一样,N一旦确定后就不能修改。
3、当用bitset进行大量数据处理时,注意变量声明的位置。如:
在内存1G的情况下,给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。
这时就可以考虑用bit来代替int数据。即分配一个40亿bit长度大空间,如果包含数A,则将该空间的第A位设置为1。如:第文件包含数12435,则将第12435个bit设置为1;若不包含,则设置为0;这样原本需要40*4=160亿Byte (16G)的空间就被压缩到了40亿/8=5亿Byte(500M)的空间里。
stl中有两个现成的模板可以使用。vector<bool>和bitset。两个模板都是使用位(bit)来存储的。
若要使用bitset解决上面的问题,一定不能将bitset声明为局部变量!!!!!
看下面的代码:
int main(){ bitset<4000000000> myset; // ........}这段代码看似没什么问题,但可以肯定,它无法运行。因为bitset声明为了局部变量,那就意味着该变量的空间要在栈上分配。500M的空间足以导致栈溢出!!!!
解决方法有两种:
①将myset声明为全局变量。
②将myset声明为指针,然后用new动态分配空间。
0 0
- 使用bitset应注意的问题
- 使用fopen时应注意的问题
- 使用Sql时应注意的问题
- 使用dll应注意的问题
- 使用指针应注意的问题
- 使用缓存应注意的问题
- 使用JDBC应注意的问题
- 使用宏定义应注意的问题
- 应注意的问题
- delete 应用时应注意的问题
- SVN使用补遗-使用中应注意的问题
- SVN使用补遗-使用中应注意的问题
- SVN使用补遗-使用中应注意的问题
- 聚类分析应注意的问题
- jpa 应注意的问题
- 变量应注意的问题
- 指针应注意的问题
- CArray 模板使用时应注意的问题.
- 终于干了点正事。。三天用了三个库opencv、emgu、aforge.net[2011.7.30]
- 多线程访问共享对象和数据的方式-总结
- Java应用级产品开发平台APDPlat
- Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf
- Matlab与C/C++混合编程调用OpenCV
- 使用bitset应注意的问题
- 禁止显示或发送Apache版本号(设置ServerTokens)
- java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException
- Java应用级产品开发平台APDPlat
- 面试题【1】:i++是否原子操作?并解释为什么?
- 定时器
- C# OLEDB 读取 Excel 记录出现"标准表达式的类型不匹配"
- Java应用级产品开发平台APDPlat
- liunx 和 window 共享文件