这个函数为什么不对?

sunboyljp 2006-11-08 06:06:05
CptrArray数组排序:
void getmaxmemory(CPtrArray& ptr)
{
struct _RunProcess *lprsinfo=(struct _RunProcess*)malloc(sizeof(_RunProcess));
struct _RunProcess *lprsinfo2=(struct _RunProcess*)malloc(sizeof(_RunProcess));

// struct _RunProcess maxmemory[10];//=(struct _RunProcess*)malloc(sizeof(_RunProcess));
// CPtrArray max;

int k=0;
for(int i=0;i<ptr.GetSize()-1;i++)

{
k=i;
for(int j=i+1;j<ptr.GetSize();j++)
{
lprsinfo2=(struct _RunProcess*)&ptr[k];
lprsinfo=(struct _RunProcess*)&ptr[j];

if(lprsinfo->data<lprsinfo2->data)
k=j;
}
if(k!=i)
{

ptr.SetAt(j,ptr[k]);
ptr.SetAt(k,ptr[j]);//就这有问题请朋友们指点
}
}
...全文
244 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzhixia 2006-11-08
  • 打赏
  • 举报
回复
CPtrArray是一个void*数组,对指针值而言,是可以直接赋值的。

for(int j = i + 1; j < ptr.GetSize(); j++)
{
void* temp;
temp = ptr[i];
ptr[i] = ptr[k];
ptr[k] = temp;
}

dreamXren 2006-11-08
  • 打赏
  • 举报
回复
for(int j=i+1;j<ptr.GetSize();j++)
{
temp = ptr.GetAt(i);
ptr.SetAt(i, ptr[j]);
ptr.SetAt(j,temp);
}
sunboyljp 2006-11-08
  • 打赏
  • 举报
回复
也就是交换值
for(int j=i+1;j<ptr.GetSize();j++)
{
temp=ptr[i];
ptr[i]=ptr[j];
ptr[j]=temp;//可是不能这么做CptrArray没有重在=运算符啊!
}

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧