#include <iostream>
#include <list> #include <string> #include <cctype> using namespace std; typedef unsigned int UINT32; typedef unsigned short UINT16; /************************************************************************/ /* 枚舉定義: 性別 */ /************************************************************************/ typedef enum enumSexyType { SEXY_TYPE_MAN, //男性 SEXY_TYPE_WOMAN, //女性 SEXY_TYPE_GAY, //男同性戀 SEXY_TYPE_LESIBAIN, //女同性戀 SEXY_TYPE_BUTT //未知性別 }ENUM_SEXY_TYPE; /************************************************************************/ /* 結(jié)構(gòu)體定義: 人 */ /************************************************************************/ typedef struct structMan { UINT32 sexType; // 性別 ENUM_SEXY_TYPE UINT16 usAge; // 年齡 string strName; // 名字 string strAddress; // 工作地址 bool operator < (const structMan &man) const { return usAge < man.usAge; } bool operator > (const structMan &man) const { return usAge > man.usAge; } structMan(UINT32 enumSexType = SEXY_TYPE_MAN,\ UINT16 usAge = 0 ,\ const string &refStrName = "" ,\ const string &refStrAddress = "")\ : sexType(enumSexType),\ usAge(usAge) ,\ strName(refStrName),\ strAddress(refStrAddress) { //DO NOTHING HERE }; }MAN; ////////////////////////////////////////////////////////////////////////// typedef list<MAN> Family; typedef list<MAN>::iterator FamilyIterator; /* * main函數(shù) 定義 */ int main() { /* 初始化 */ MAN stFather(SEXY_TYPE_MAN, 28, "倒霉熊老爸", "華為技術(shù)有限公司"); MAN stMother(SEXY_TYPE_WOMAN, 27, "蝦米老媽", "鄭州大學(xué)第二附屬醫(yī)院"); MAN stBaby (SEXY_TYPE_BUTT, 0, "小天使", "未知"); Family myFamily; /* 依次存放到list中 */ myFamily.push_back(stFather); myFamily.push_back(stMother); myFamily.push_back(stBaby); /* 調(diào)用list的sort函數(shù)進(jìn)行排序, 默認(rèn)會(huì)使用結(jié)構(gòu)體重載的<號(hào), 進(jìn)行從小到大排序 */ myFamily.sort(); printf("按年齡從小到大排序:\n"); FamilyIterator it = myFamily.begin(); while(it != myFamily.end()) { printf("姓名: %s \n", it->strName.c_str()); it++; } /* 調(diào)用模板函數(shù) greater, 傳入MAN結(jié)構(gòu)體, 這樣會(huì)調(diào)用結(jié)構(gòu)體重載的>號(hào), 進(jìn)行從大到小排序 */ greater<MAN> gt; myFamily.sort(gt); printf("\n按年齡從大到小排序:\n"); it = myFamily.begin(); while(it != myFamily.end()) { printf("姓名: %s \n", it->strName.c_str()); it++; } return 0; } |
|