当前位置:  开发笔记 > 编程语言 > 正文

如何对用户定义类型的CArray进行排序?

如何解决《如何对用户定义类型的CArray进行排序?》经验,为你挑选了1个好方法。

是否有内置的方法在C++中对CArray进行排序?



1> Shog9..:

std::sort() 应该管用:

CArray arrayOfInts;
arrayOfInts.Add(7);
arrayOfInts.Add(114);
arrayOfInts.Add(3);
std::sort(arrayOfInts.GetData(), arrayOfInts.GetData()+arrayOfInts.GetSize());

这使用指向数组中第一个元素的指针作为开始迭代器,并指向一个超过最后一个元素的指针作为最后一个迭代器(无论如何都不应该取消引用,所以一切都很好).如果数组包含更多有趣的数据,您还可以传入自定义谓词:

struct Foo
{
  int val;
  double priority;
};

bool FooPred(const Foo& first, const Foo& second)
{
   if ( first.val < second.val )
      return true;
   if ( first.val > second.val )
      return false;
   return first.priority < second.priority;
}

//... 

   CArray bar;
   std::sort(bar.GetData(), bar.GetData()+bar.GetSize(), FooPred);

哦 - 不要用CArray.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有