首页 > 代码库 > 使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象。
代码如下
1 #include <stdio.h> 2 #include <vector> 3 #include <algorithm> 4 5 using namespace std; 6 7 class Elm 8 { 9 public:10 int m_iSortProof;11 12 private:13 int __m_iValue;14 static int __m_iCnt;15 16 public:17 Elm();18 int getValue(int iX);19 void printElm();20 };21 22 int Elm::__m_iCnt = 0;23 24 Elm::Elm()25 {26 __m_iCnt ++;27 __m_iValue =http://www.mamicode.com/ __m_iCnt;28 m_iSortProof = getValue(__m_iCnt);29 }30 31 /* (x-10.3)^2 + 0.6*/32 int Elm::getValue(int iX)33 {34 float fX = (float)iX - 10.3;35 36 float fY = fX * fX + 0.6;37 38 return (int)fY;39 }40 41 void Elm::printElm()42 {43 printf("value : %3d, proof : %3d\n", __m_iValue, m_iSortProof);44 }45 46 /*z -> a*/47 bool compare(const Elm * a, const Elm * b)48 {49 return a->m_iSortProof > b->m_iSortProof;50 }51 52 int main(int argc, char * argv[])53 {54 vector<Elm *> vecpList;55 int i = 0;56 for(i = 0; i < 20; i++)57 {58 Elm * pElm = new Elm;59 vecpList.push_back(pElm);60 }61 for(vector<Elm *>::iterator pE = vecpList.begin(); pE != vecpList.end(); pE++)62 {63 (*pE)->printElm();64 }65 /*使用sort对vector进行排序*/66 sort(vecpList.begin(), vecpList.end(), compare);67 printf("\033[0;34m----------------sorted----------------\033[0m\n");68 for(vector<Elm *>::iterator pE = vecpList.begin(); pE != vecpList.end(); pE++)69 {70 (*pE)->printElm();71 }72 73 return 0;74 }
运行结果如下
1、排序前
value : 1, proof : 87value : 2, proof : 69value : 3, proof : 53value : 4, proof : 40value : 5, proof : 28value : 6, proof : 19value : 7, proof : 11value : 8, proof : 5value : 9, proof : 2value : 10, proof : 0value : 11, proof : 1value : 12, proof : 3value : 13, proof : 7value : 14, proof : 14value : 15, proof : 22value : 16, proof : 33value : 17, proof : 45value : 18, proof : 59value : 19, proof : 76value : 20, proof : 94
排序后
value : 20, proof : 94value : 1, proof : 87value : 19, proof : 76value : 2, proof : 69value : 18, proof : 59value : 3, proof : 53value : 17, proof : 45value : 4, proof : 40value : 16, proof : 33value : 5, proof : 28value : 15, proof : 22value : 6, proof : 19value : 14, proof : 14value : 7, proof : 11value : 13, proof : 7value : 8, proof : 5value : 12, proof : 3value : 9, proof : 2value : 11, proof : 1value : 10, proof : 0
使用STL库sort函数对vector进行排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。