<pre name="code" class="cpp">近来讨论到一个问题,关于整型数据看成一个数组,元素是整型的每一位,那么这样看来如果是一维数组,那么就可以看成“二维数组”数组使用,第二维存放的是整型的每一位。我们访问的时候又要用[ ]进行访问,那么我首先想到的是在C++中可以试试运算符的重载,干掉它,使他按我们定义的方式来,可以试试
#include <iostream>
using namespace std;
class Element
{
public :
Element(int aData=0);
~Element();
int &operator[](int aIndex);
private:
int m_iData;
int temp;
};
Element::Element(int aData)
{
m_iData=aData;
}
Element::~Element()
{}
int &Element::operator[](int aIndex)//0-31
{
/*
if(aIndex<0||aIndex>31)
{
return -1;
}
*/
//da->xiao 31->0
temp=m_iData;
temp=temp>>aIndex;
temp=temp&0x0001;//按位与
return temp;
//return (int)((m_iData>>aIndex)&&0x0001);
}
class Data
{
public:
Data(int iData);
~Data();
Element &operator[](int aIndex);
private:
int m_iSize;
Element *m_pElement;
};
Data::Data(int iData)
{
m_iSize=iData;
m_pElement=new Element[m_iSize];
}
Data::~Data()
{
delete []m_pElement;
}
Element &Data::operator[](int aIndex)
{
return m_pElement[aIndex];
}
/*
Data 放Element数组
Element 放整型数据
这样Data就相当于一维数组
*/
int main()
{
Data data(100);//一维数组[100]
Element ele(3);
data[0]=ele;//给一维数组的第一个元素赋值
cout<<data[0][0]<<endl;//取第一个元素的第0 bit位
return 0;
}
把整型当成数组来访问,重载[ ]
最新推荐文章于 2020-09-28 13:24:05 发布