C++中的结构体vector排序详解

使用sort函数对一个vector很常用,前提是通文件中必须包含#include ,但是针对结构体vector排序则需要进行一定的改动。具体事例如下所示:

// sort algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::sort
#include <vector>       // std::vectorbool myfunction (int i,int j) { return (i<j); }struct myclass {bool operator() (int i,int j) { return (i<j);}
} myobject;int main () {int myints[] = {32,71,12,45,26,80,53,33};std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33// using default comparison (operator <):std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33// using function as compstd::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)// using object as compstd::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)// print out content:std::cout << "myvector contains:";for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}

但是当vector中的变量是结构体,并且需要按照结构体的某一个元素进行排序时,则需要进行一定的修改:

#include "privateHeader.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using std::string;
using std::vector;
using std::cout;
using std::endl;
using namespace std;typedef struct
{float score;string file_name;string all_file_name;}TFileProp;bool GreaterSort(TFileProp a, TFileProp b)
{return (a.score > b.score);
}
bool LessSort(TFileProp a, TFileProp b)
{return (a.score < b.score);
}
vector<TFileProp> VecFileProp;VecFileProp.push_back(tFileProp);    //对vector进行push操作std::sort(VecFileProp.begin(), VecFileProp.end(), GreaterSort);    //进行降序排序
std::sort(VecFileProp.begin(), VecFileProp.end(), LessSort);    //进行升序排序

还有一点,利用Iang传递参一个数据时,由于命令行接收的参数是以char** argv存储的,因此需要先进行强制类型转换,经过一个string作为中间的转换变量,最终转成int型,另外,我之前认为由于是char型的原因,应该主能传递0-255的参数,但是仔细想一下是不对的,因为无论是多大的数,都是以一个字符串传递进去的,然后string类型再进行强转的时候就转陈了int型,因此并不存在256的大小限制。

int main(int argc, char** argv)
{// 统计时间//timeStatistics();// 所有结果放到一个文件夹显示int num_save;if (argc == 2){std::string thres = argv[1];num_save = atof(thres.c_str());//std::cout << "(int)argv[1] is " << argv[1];//std::cout << "num_save is " << num_save;}else{num_save = 100;}showAllResult(num_save);return 1;
}

参考文章:https://www.cnblogs.com/rainsoul/p/6290854.html

C++中的结构体vector排序详解相关推荐

  1. c语言结构体成员变量私有化,C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...

  2. C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt

    c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...

  3. go结构体初始化_go嵌套匿名结构体的初始化详解

    go匿名结构体 嵌套匿名结构体的 示例代码片. type debugConfig struct { MaxQueueDepth int `json:"maxQueueDepth"` ...

  4. Linux 中使用 sort 指令分组排序详解

    Linux 中使用 sort 指令分组排序详解 sort 中进行分组排序主要用到的选项为 -k,此文,我们着重于该选项的使用方式,用到的其它选项不做解释,有兴趣的同学可以查看帮助文档 1. 数据准备 ...

  5. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  6. 32.【C/C++ 结构体全类型 (详解)】

    C结构体的应用 (一).什么是结构体? (二).结构体的声明: 2.1介绍一下上面的结构体声明: 2.2struct声明的位置 2.3标记名的可省略性 (三).结构体变量的定义 3.1分配空间 3.2 ...

  7. 结构体字节对齐详解【含实例】

    一.前言 结构体字节对齐属于老生常谈的问题,看似简单,却很容易忘记.而且因为结构体使用的普遍性,使得字节对齐也成为了一个不得不谈的话题. 二.什么是结构体字节对齐 假设现在有一个结构体如下,问你它的一 ...

  8. 结构体和联合体详解-定义及初始化

    文章目录 前言 一.结构体 1.1结构体类型 1.2定义结构体变量 1.3 初始化结构体变量 1.4结构体变量的引用 二.结构体数组 2.1定义结构体数组 2.2初始化结构体数组 三.联合体 3.1初 ...

  9. c语言实现结构体变量private,C语言中结构体变量私有化详解

    背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate ...

最新文章

  1. nyoj543遥控器
  2. Django-RQ介绍
  3. 【LeetCode】TreeNode类实现解析(java实现)
  4. GIF图片合集(用于网络请求图片用)
  5. Windows下动态库的制作与使用
  6. Python连接DB2数据库
  7. chattr 锁定文件
  8. nero platinum刻录光盘简要教程(文章末尾有教程链接)
  9. 京东用户行为数据分析报告(python)
  10. 别人对你好是因为你有利用的价值,而我就不同了
  11. 京东物流实时风控实践
  12. mac安装jekyll
  13. 高德API 经纬度转换地市区县(含读取文件)
  14. java-net-php-python-jsp网上拍卖系统计算机毕业设计程序
  15. 帆软大屏背景怎么设置_FineReport报表工具增加动态背景色
  16. Vim内同时对多行增加或删除相同的内容
  17. 【Bootstrap】一个兼容IE8、谷歌等主流浏览器的受众巨幕式风格页面
  18. C++的运算符重载http://blog.csdn.net/zgl_dm/article/details/1767201
  19. java在windows下启动jar包使用utf-8格式
  20. Arcgis使用教程(十二)ARCGIS地图制图之比例尺设置参数详解

热门文章

  1. Vue-elementUI实现PC端商城购物车计算
  2. mysql 流式查询_Mybatis流式查询避免OOM
  3. 解决 unexpected EOF while looking for matching `“‘
  4. C# 中的SqlCommand 的用法和它的几个方法
  5. 一个装逼小程序C++代码
  6. 如何快速搭建一个新项目的运营体系?
  7. 旋转矩阵(Rotation Matrix)
  8. 任意爬取!超全开源爬虫工具箱
  9. 亚马逊第二总部要选在华盛顿特区?
  10. ppt_DNA元基催化与肽计算_第四修订版_V00919