位容器

原创 2012年03月25日 00:53:59
#pragma once
#include <iostream>
#include <Windows.h>
using namespace std;

class CMyBitVector
{
public:
	CMyBitVector(int iSize);
	~CMyBitVector();

	BOOL Resize(int iSize);
	BOOL SetBit(int iIndex);
	BOOL ClearBit(int iIndex);
	void ClearAll();
	void SetAll();
	void Show();
	BOOL operator[](int iIndex);

private:
	unsigned long* m_pArray;
	int m_iSize;
};

CMyBitVector::CMyBitVector(int iSize)
{
	m_iSize=0;
	m_pArray=NULL;
	Resize(iSize);
}

CMyBitVector::~CMyBitVector()
{
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
	m_iSize=0;
}

BOOL CMyBitVector::Resize(int iSize)
{
	int iRealSize=0;
	if (0==iSize % sizeof(int))
	{
		iRealSize=iSize/sizeof(int);
	}
	else
	{
		iRealSize=iSize/sizeof(int)+1;
	}
	unsigned long* mNewArray=new unsigned long[iRealSize];
	ZeroMemory(mNewArray,iRealSize*sizeof(unsigned long));
	int iMinSize=0;
	if (iRealSize<m_iSize)
	{
		iMinSize=iRealSize;
	}
	else
		iMinSize=m_iSize;
	for (int index=0;index<iMinSize;index++)
	{
		mNewArray[index]=m_pArray[index];
	}
	m_iSize=iRealSize;
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
	m_pArray=mNewArray;
	return TRUE;
}

BOOL CMyBitVector::operator [](int iIndex)
{
	if (iIndex<0 || iIndex>=m_iSize*sizeof(unsigned long))
	{
		return FALSE;
	}
	int index=iIndex/(sizeof(int)*8);
	int bitindex=iIndex % (sizeof(int)*8);
	return (m_pArray[index] & 1 << bitindex) >> bitindex;
}

BOOL CMyBitVector::SetBit(int iIndex)
{
	if (iIndex<0 || iIndex>=m_iSize*sizeof(unsigned long))
	{
		return FALSE;
	}
	int index=iIndex/(sizeof(int)*8);
	int bitindex=iIndex % (sizeof(int)*8);
	m_pArray[index]=m_pArray[index] | (1 << bitindex);
	return TRUE;
}

BOOL CMyBitVector::ClearBit(int iIndex)
{
	if (iIndex<0 || iIndex>=m_iSize*sizeof(unsigned long))
	{
		return FALSE;
	}
	int index=iIndex/(sizeof(int)*8);
	int bitindex=iIndex % (sizeof(int)*8);
	m_pArray[index]=m_pArray[index] & (~(1 << bitindex));
	return TRUE;
}

void CMyBitVector::ClearAll()
{
	for (int index=0;index<m_iSize;index++)
	{
		m_pArray[index]=0;
	}
}

void CMyBitVector::SetAll()
{
	for (int index=0;index<m_iSize;index++)
	{
		m_pArray[index]=0xFFFFFFFF;
	}
}

void CMyBitVector::Show()
{

}

在32位ubuntu中安装docker并且成功启动容器

在32位ubuntu中安装docker并且成功启动容器
  • u012724595
  • u012724595
  • 2015年07月27日 17:54
  • 1333

bit_vector位向量容器

http://blog.163.com/zhoumhan_0351/blog/static/3995422720103892031806/ bit_vector位向量容器 一、原理 ...
  • f81892461
  • f81892461
  • 2013年02月20日 22:59
  • 1785

bit_vector位向量容器

一、原理 bit_vector位向量容器是一个bit位元素的序列容器,具有vector容器一样的成员函数,常用于硬件端口的控制。区别于vector的一个重要特性是bit_vector更节省内存空间,...
  • u012905667
  • u012905667
  • 2013年12月25日 20:29
  • 597

Bitset位集合容器

Bitset容器是一个bit位元素的序列容器每个元素只占一个bit位取值非0即1 因而很节省空间他的10个元素只使用了两个字节的空间 Bitset位集合容器创建bitset对象 创建bitset...
  • bingsanchun1
  • bingsanchun1
  • 2013年08月14日 19:26
  • 623

C++STL之bitset位集合容器

bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,有节省内存空间,下面水泥bitset的存储示意图,它的19个元素只使用了两个字符的空间。 方法 b.any() ...
  • caicai_zju
  • caicai_zju
  • 2015年10月22日 15:04
  • 288

容器技术入门

说到容器,这个概念现在非常火;实际上,在IT领域内各种技术一直是逐步迭代演进的,而每一次技术革新,正是从发现问题开始。 问题一:windows系统方面 先从大家用的windows说起。我们经常有这样的...
  • Ceconomist
  • Ceconomist
  • 2017年01月13日 14:55
  • 551

java中的容器讲解

细说Java之util类: 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简...
  • wwww1988600
  • wwww1988600
  • 2013年03月07日 13:42
  • 14636

IoC容器在Web容器中的启动

简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对应的建立起一个IOC容器的体系。其中,首先需要建立的是根上下文,这个上下文持有的对象可以有业务对象,...
  • CHINADENG
  • CHINADENG
  • 2014年03月13日 16:10
  • 1547

C++9.5 vector/list/queue容器的区别与选用

简介==================================================================================================...
  • hlsdbd1990
  • hlsdbd1990
  • 2015年06月08日 14:45
  • 1090

Java集合类和容器类

1.集合类的继承关系: 2.对各个集合类的一些说明: 3.
  • u014522348
  • u014522348
  • 2014年10月24日 10:07
  • 1754
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位容器
举报原因:
原因补充:

(最多只允许输入30个字)