使用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 = ;
  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 = ;
  56. for(i = ; i < ; 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 ;
  74. }

运行结果如下

1、排序前

  1. value : , proof :
  2. value : , proof :
  3. value : , proof :
  4. value : , proof :
  5. value : , proof :
  6. value : , proof :
  7. value : , proof :
  8. value : , proof :
  9. value : , proof :
  10. value : , proof :
  11. value : , proof :
  12. value : , proof :
  13. value : , proof :
  14. value : , proof :
  15. value : , proof :
  16. value : , proof :
  17. value : , proof :
  18. value : , proof :
  19. value : , proof :
  20. value : , proof :

排序后

  1. value : , proof :
  2. value : , proof :
  3. value : , proof :
  4. value : , proof :
  5. value : , proof :
  6. value : , proof :
  7. value : , proof :
  8. value : , proof :
  9. value : , proof :
  10. value : , proof :
  11. value : , proof :
  12. value : , proof :
  13. value : , proof :
  14. value : , proof :
  15. value : , proof :
  16. value : , proof :
  17. value : , proof :
  18. value : , proof :
  19. value : , proof :
  20. value : , proof :

使用STL库sort函数对vector进行排序的更多相关文章

  1. STL的sort函数是使用什么排序算法的?

    先占坑,大概就是主要快速排序+插入排序+堆排序的合体

  2. sort函数用于vector向量的排序

    参考资料: 关于C++中vector和set使用sort方法进行排序 作者注:这篇文章写得相当全面,包括对vector和set中不同数据类型(包括结构体)的排序,还有一些还没看懂--特作此摘录,供当前 ...

  3. <algorithm>里的sort函数对结构体排序

    题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...

  4. 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探

    本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...

  5. STL之sort函数的用法

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! STL封装了一个排序算法,该算法相应的头文件为#include<algorithm>,我们能够依据须要对一个数组进行排序或者降序. so ...

  6. STL 之 sort 函数使用方法

    关于Sort Sort函数是C++ STL(Standard Template Library / 标准函数库) <algorithm>头文件中的一个排序函数,作用是将一系列数进行排序,因 ...

  7. C++中STL的sort函数

    简单介绍C++ sort函数 这个函数需要STL算法头文件 #include <algorithm> using namespace std; 这个sort( , , )可以带两个参数也可 ...

  8. sort函数的用法(C++排序库函数的调用)

    对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了. (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c+ ...

  9. 【iOS】swift 排序Sort函数用法(包含NSDictionary排序)

    用了几分钟做的简单翻译 一个例子 直接贴代码,不过多解释 //这是我们的model class imageFile { var fileName = String() var fileID = Int ...

随机推荐

  1. android dialog 模拟新浪、腾讯title弹框效果

    http://blog.csdn.net/jj120522/article/details/7764183 首先我们看一下新浪微博的效果(其它就是一个dialog):                点 ...

  2. 【Django】Django 直接执行原始SQL 如何防止SQL注入 ?

    代码示例: #错误--不要直接格式化字符串 query = 'SELECT * FROM myapp_person WHERE last_name = %s' % lname Person.objec ...

  3. java类的封装 继承 多态

    1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...

  4. (转)Android中的Shape使用总结

    http://blog.csdn.net/bear_huangzhen/article/details/24488337 在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的 ...

  5. Android之数据库操作

    安卓数据库帮助类 /** * 数据库帮助类,用于管理数据库 * @author Administrator * */ public class PersonSQLiteOpenHelper exten ...

  6. 使用rsync 的 --delete参数删除目标目录比源目录多余的文件

    root@v01 ~]# mkdir dir01 dir02 [root@v01 ~]# ls anaconda-ks.cfg dir02 framework install.log.syslog m ...

  7. Vim折叠模式设置

    参考文章:http://www.cnblogs.com/welkinwalker/archive/2011/05/30/2063587.html set foldmethod=indent " ...

  8. 在Android4.4上新增加keycode

    keycode是android定义好的,但是有时候无法满足需要,进行定制化难免会涉及到新增加keycode.分成两部分,驱动和framework,这里主要讲解framework部分: 一.驱动部分: ...

  9. HTML 调用iscroll.js主要事项

    iscroll是一款很不错的滚动控件(js),但是在调用的时候,需要注意一些事项: 1.iscroll支持水平和垂直滚动,那么在调用的时候,一定注意滚动div必须大于父div,也就是说,父div的宽度 ...

  10. hrbustoj 1179:下山(DFS+剪枝)

    下山Time Limit: 1000 MS Memory Limit: 65536 KTotal Submit: 271(111 users) Total Accepted: 129(101 user ...