2008-10-28 17 views

उत्तर

9

std::sort() काम करना चाहिए:

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

यह शुरू iterator के रूप में सरणी में पहला तत्व के लिए सूचक है, और अंतिम इटरेटर के रूप में अंतिम तत्व के बाद एक के लिए सूचक का उपयोग करता है (वैसे भी कभी नहीं dereferenced किया जाना चाहिए , तो सब ठीक है)। तुम भी एक कस्टम विधेय पास कर सकता है यदि सरणी और अधिक दिलचस्प डेटा निहित:

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 प्रयोग नहीं करते।

+0

बस एमएसडीएन ब्राउज़ करना, मुझे कोई गारंटी नहीं दिखती है कि कैरे डेटा को संगत रूप से संग्रहीत करता है। मुझे उम्मीद है कि यह करता है, लेकिन ... std :: वेक्टर प्रारंभ में इस दोष था, और जब यह खोजा गया था तो मानक को सही किया गया था। –

+1

यहां देखें: http://msdn.microsoft.com/en-us/library/yzsdcs85(VS.80).aspx (या बस afxtempl.h में स्रोत पढ़ें)। ऐसा नहीं है कि एमएफसी हैक का संग्रह जितना मानक है। – Shog9

+0

धन्यवाद, वह नहीं देखा! –

संबंधित मुद्दे

 संबंधित मुद्दे