CStringArray Á¤·ÄÇϱâ


1.¿ä¾à

CStringArray ¸¦ »ç¿ëÇÒ¶§ Á¤·ÄÀ» ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ¾î·Á¿î Á¤·ÄÀ» ¾î¶»°Ô ÇÏ¸é ½¬¿ï±î¿ä?


2.º»¹®

CStringArray °´Ã¼¸¦ Á¤·ÄÇϱâ À§Çؼ­ ¾Æ·¡¿¡¼­ º¸¿©ÁÖ´Â ¼Ò½ºÄڵ带 »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. main() ÇÔ¼ö¿¡¼­´Â CStringArray °´Ã¼¸¦ ¸¸µé°í, ³»¿ëµéÀ» Ãß°¡½Ãŵ´Ï´Ù. ±×¸®°í ³ª¼­ È­¸é¿¡ Ãâ·ÂÇϰí sort() ÇÔ¼ö¸¦ È£ÃâÇÏÁÒ. ÀÌÁ¦ sort()ÇÔ¼ö°¡ ³¡³ª°í ³­ÈÄ ´Ù½Ã È­¸é¿¡ Ãâ·ÂÇØ¼­ sort() ÇÔ¼ö°¡ Á¦´ë·Î ¿ªÇÒÀ» ¼öÇàÇß´ÂÁö °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù. sort() ÇÔ¼ö´Â Bubble Sort ¾Ë°í¸®ÁòÀ» »ç¿ëÇßÀ¸¸é CompareAndSwap()¶ó´Â ÇÔ¼ö¸¦ ±¸ÇöÇÏ¿© CString °´Ã¼³¢¸® ¼­·Î À§Ä¡¸¦ ¹Ù²Ü ¼ö ÀÖµµ·Ï Çϰí ÀÖ½À´Ï´Ù.


3.¿¹Á¦


/* 

* Compile options needed: /MT 

*/ 



#include <afx.h> 

#include <iostream.h> 

#include <afxcoll.h> 





class CSortStringArray : public CStringArray { public: 

void Sort(); 



private: 

    BOOL CompareAndSwap(int pos); 

    

}; 



void CSortStringArray::Sort() 



{ 

    BOOL bNotDone = TRUE; 

    

    while (bNotDone) 

    { 

        bNotDone = FALSE; 

        for(int pos = 0;pos < GetUpperBound();pos++) 

            bNotDone |= CompareAndSwap(pos); 

    } 

} 





BOOL CSortStringArray::CompareAndSwap(int pos) { 

    CString vc_b; 

    int posFirst = pos; 

    int posNext = pos + 1; 

    

    if (GetAt(posFirst).CompareNoCase(GetAt(posNext)) > 0) 

    { 

        vc_b = GetAt(posFirst); 

        SetAt(posFirst, GetAt(posNext)); 

        SetAt(posNext, vc_b); 

        return TRUE; 

    } 

    return FALSE; 

    

} 



void main() 



{ 

    CSortStringArray sortArray; 

    

    sortArray.Add(CString("Zebra")); 

    sortArray.Add(CString("Bat")); 

    sortArray.Add(CString("Apple")); 

    sortArray.Add(CString("Mango")); 

    

    for (int i = 0; i <= sortArray.GetUpperBound(); i++) 

        cout << sortArray[i] << endl; 

    

    sortArray.Sort(); 

    cout << endl; 

    

    for (int j = 0; j <= sortArray.GetUpperBound(); j++) 

        cout << sortArray[j] << endl; 

    

} 




- 2001.08.06 Smile Seo -