鐜板湪闇瑕佺敤涓涓鍣ㄥ瓨鏀捐嫢騫插璞$殑鎸囬拡錛圓Object*錛夛紝瀵硅薄鎸囬拡鍦ㄥ鍣ㄤ腑鐨勯『搴忔寜鐓у璞℃煇涓睘鎬э紙pObject->GetValue();錛変粠浣庡埌楂樻帓搴忋?/span>
浜屻?瑙e喅"鏂規硶錛?br>
1. 浣跨敤std::set
set涓殑鍏冪礌鏄寜鐓т竴瀹氱殑欏哄簭鐨勫瓨鏀劇殑錛堟牴鎹厓绱犵殑澶у皬錛夈傞氳繃鍒跺畾set鐨勭浜屼釜妯℃澘鍙傛暟灝卞彲浠ヨ瀹冩寜鎴戜滑鐨勮姹傞『搴忔帓鏀俱?br>
鍏堝啓涓涓嚱鏁板璞★細
// object compare functor
class CompareObject


{
bool operator() (AObject* lhv, AObject* rhv)

{
return lhv->GetValue() < rhv->GetValue();
}
}

// decleare the object container;
typedef std::set<AObject*, CompareObject> AObjectContainer;
AObjectContainer setContainer;
榪欑鏂規硶鏈夊暐闂錛?br>(瑙佹枃鍚庯級
2. 浣跨敤std::list
list涓殑鍏冪礌榛樿涓嶄細鎺掑簭錛岄渶瑕佹垜浠?#8220;鎵嬪姩”鎺掑簭銆?br>鐢╨ist榪欐牱澹版槑錛?br>
typedef std::list<AObject*> AObjectContainer;
AObjectContainer listContainer;
娣誨姞瀹屽厓绱犲悗錛屽啀鎺掑簭錛?br>
錛?錛変嬌鐢╯td::sort?
鍙敞鎰忎簡錛宻td::list璨屼技涓嶆敮鎸佺敤std::sort榪涜鐢ㄦ埛鑷畾涔夋帓搴忥紝鍙嶆鎴戞槸娌℃湁璇曟垚鍔燂紙鏈夊叴瓚g殑鍚屽鍙互瑙i噴涓涓嬶級銆傚亣濡傝繖鏍峰啓鏄敊璇殑錛?/span>
std::sort(listContainer.begin(), listContainer.end(), CompareObject());
錛?錛変嬌鐢╨ist.sort()
listContainer.sort(CompareObject());
涓夈佸垎鏋?br>
鏂規硶1瀛樺湪闈炲父涓ラ噸鐨勯棶棰樷斺斿唴瀛樻硠婕忋?br>set涓殑鍏冪礌鏄寜搴忔帓鍒楋紙姝ゅ鏄寜object.GetValue()鐨勫ぇ灝忔帓搴忥紝鎴戜滑鎶婅繖涓間篃鍙玨ey鍚э級錛屾敞鎰忕殑鏄痵et涓笉瀛樺湪key鍊肩浉絳夌殑鍏冪礌銆傚亣濡傝鎻掑叆鐨勫厓绱犲湪set涓凡緇忓瓨鍦ㄤ細鍙戠敓浠涔堝憿錛熸槸鐢ㄦ柊鐨勫厓绱犳浛鎹㈠師鏉ョ殑鍏冪礌榪樻槸淇濈暀鍘熸潵鐨勫厓绱犲憿錛燂紙鏈夊叴瓚f湁鏃墮棿鐨勫悓瀛﹀府蹇欏仛涓疄楠屽惂錛変絾鏈変竴鐐瑰彲浠ヨ偗瀹氾紝鏈変竴涓閬楀け浜嗐傚鏋渟et涓瓨鏀劇殑鏄璞★紝榪樻病鍟ラ棶棰樸備絾鐜板湪set涓瓨鏀劇殑鏄寚閽堬紝浜庢槸鍐呭瓨渚挎硠婕忎簡銆?/span>

]]>