使用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 = __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 :  87
value :   2, proof :  69
value :   3, proof :  53
value :   4, proof :  40
value :   5, proof :  28
value :   6, proof :  19
value :   7, proof :  11
value :   8, proof :   5
value :   9, proof :   2
value :  10, proof :   0
value :  11, proof :   1
value :  12, proof :   3
value :  13, proof :   7
value :  14, proof :  14
value :  15, proof :  22
value :  16, proof :  33
value :  17, proof :  45
value :  18, proof :  59
value :  19, proof :  76
value :  20, proof :  94
复制代码

  排序后

复制代码
value :  20, proof :  94
value :   1, proof :  87
value :  19, proof :  76
value :   2, proof :  69
value :  18, proof :  59
value :   3, proof :  53
value :  17, proof :  45
value :   4, proof :  40
value :  16, proof :  33
value :   5, proof :  28
value :  15, proof :  22
value :   6, proof :  19
value :  14, proof :  14
value :   7, proof :  11
value :  13, proof :   7
value :   8, proof :   5
value :  12, proof :   3
value :   9, proof :   2
value :  11, proof :   1
value :  10, proof :   0
复制代码

 



本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4112385.html,如需转载请自行联系原作者
相关文章
|
12月前
|
算法 搜索推荐 C++
【C++STL基础入门】vector运算和遍历、排序、乱序算法
【C++STL基础入门】vector运算和遍历、排序、乱序算法
175 0
|
算法 Java C++
27.【C/C++ 最全vector数组的用法 (详解)】(一)
27.【C/C++ 最全vector数组的用法 (详解)】
234 0
|
4月前
|
存储 安全 算法
C++的内置数组和STL array、STL vector
C++的内置数组和STL array、STL vector
|
5月前
|
存储 算法 Linux
【STL】:vector用法详解
【STL】:vector用法详解
78 1
|
5月前
|
C++ 容器
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
|
10月前
|
存储 算法 C++
STL中vector的用法以及模拟实现
STL中vector的用法以及模拟实现
47 0
|
12月前
|
存储 C++ 容器
【C++】STL之vector操作
【C++】STL之vector操作
|
存储 算法 C语言
STL库之动态数组vector基本使用方法
STL库之动态数组vector基本使用方法
|
算法 搜索推荐 C++
STL之sort应用
STL之sort应用
|
人工智能 算法 C++
c++ stl vector 的相关用法
c++ stl vector 的相关用法
85 0
c++ stl vector 的相关用法