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

时间:2008-10-28 19:19:59

标签: c++ data-structures mfc sorting

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

1 个答案:

答案 0 :(得分:9)

std::sort()应该有效:

CArray<int> 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<Foo> bar;
   std::sort(bar.GetData(), bar.GetData()+bar.GetSize(), FooPred);

哦 - 不要使用CArray