6
CArray'ı C++ içinde sıralamak için yerleşik bir yol var mı?Kullanıcı tanımlı türden bir CArray'i nasıl sıralarım?
CArray'ı C++ içinde sıralamak için yerleşik bir yol var mı?Kullanıcı tanımlı türden bir CArray'i nasıl sıralarım?
std::sort()
çalışması gerekir:
CArray<int> arrayOfInts;
arrayOfInts.Add(7);
arrayOfInts.Add(114);
arrayOfInts.Add(3);
std::sort(arrayOfInts.GetData(), arrayOfInts.GetData()+arrayOfInts.GetSize());
Bu başlangıç yineleyici olarak dizideki ilk elemana işaretçi ve son iterasyon olarak son öğenin ardına birine işaretçi kullanır (yine indirgenmedikleri asla , yani her şey iyi. Sen dizi daha ilginç veriler içeriyorsa da özel bir yüklemi geçebileceği:
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);
Oh - ve CArray
kullanmayın.
Sadece MSDN taraması yaparken, CArray öğesinin verileri sürekli olarak sakladığını garanti edemiyorum. Bunu beklerim, ama ... std :: vektör başlangıçta bu kusur vardı ve keşfedildiği zaman standart düzeltildi. –
Bak: http://msdn.microsoft.com/en-us/library/yzsdcs85(VS.80).aspx (veya sadece afxtempl.h kaynağını okuyun). MFC, bir korsan topluluğu kadar standart bir şey değil. – Shog9
Teşekkürler, onu görmedim! –