求教,自定义类数组的快速定位步骤
求教,自定义类数组的快速定位方法?
求教关于自定义类数组中成员的快速定位方法。
自己定义了一个类,现在需要对类的数组中的元素快速定位。
类定义如下:
其中operater[]和pos()是定位方法,自己写的定位方法如下:
想问问大家有没有更好的定位方法?
------解决思路----------------------
可以在添加元素的时候作插入排序,这样用二分法可以快速定位。
求教关于自定义类数组中成员的快速定位方法。
自己定义了一个类,现在需要对类的数组中的元素快速定位。
类定义如下:
class _GradientPoint
{
public:
_GradientPoint();
~_GradientPoint();
int x; //坐标
int y;
int grayValue; //灰度值
double orien; //方向
double gradValue; //梯度值
int group; //分组
double relative; //相对角度
bool flag; //标记位
} ;
//////////////////////////////
class _PointGroup :public _GradientPoint
{
public:
int pointNum;
public:
_PointGroup();
~_PointGroup();
_GradientPoint *GradientPoint;
//
void creat( int n );
void init( int col, int row);
void destory();
_GradientPoint* operator [](int nIndex) const;
_GradientPoint* pos( int x, int y );
};
其中operater[]和pos()是定位方法,自己写的定位方法如下:
_GradientPoint* _PointGroup::operator [](int nIndex) const
{
if(0 <= nIndex && nIndex < pointNum)
{
return &GradientPoint[nIndex];
}
}
//
_GradientPoint* _PointGroup::pos( int x, int y )
{
int count = 0;
_GradientPoint* pTemp;
for(int i = 0;i < pointNum;i++) //pointNum为数组大小
{
if( GradientPoint->x == x &&
GradientPoint->y == y)
{
pTemp = GradientPoint;
//点组指针复位
GradientPoint -= count;
//返回灰度点指针
return pTemp;
}else GradientPoint++;
count++;
}
}
想问问大家有没有更好的定位方法?
------解决思路----------------------
可以在添加元素的时候作插入排序,这样用二分法可以快速定位。