如何排序 MFC的CStringArray

#define  _AFXDLL
#include 
< afx.h >
#include 
< afxcoll.h >
#include 
< iostream >
using   namespace  std;

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 temp;
    
int posFirst = pos;
    
int posNext = pos + 1;

    
if (GetAt(posFirst).CompareNoCase(GetAt(posNext)) > 0)
    
{
        temp 
= GetAt(posFirst);
        SetAt(posFirst, GetAt(posNext));
        SetAt(posNext, temp);
        
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;
    system(
"pause");
}

参考: How to Sort a CStringArray in MFC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值