C++でCArrayをソートする組み込みの方法はありますか?
5411 次
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 に答える