7

C++でCArrayをソートする組み込みの方法はありますか?

4

1 に答える 1

10

std::sort()動作するはずです:

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

これは、配列の最初の要素へのポインターを開始イテレーターとして使用し、最後の要素の 1 つ後ろへのポインターを最後のイテレーターとして使用します (いずれにせよ逆参照されるべきではないので、すべて問題ありません)。配列にさらに興味深いデータが含まれている場合は、カスタム述語を渡すこともできます。

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

于 2008-10-28T19:25:12.797 に答える