C++中的结构体vector排序详解
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排序详解相关推荐
- c语言结构体成员变量私有化,C语言中结构体变量私有化详解
C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...
- C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt
c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...
- go结构体初始化_go嵌套匿名结构体的初始化详解
go匿名结构体 嵌套匿名结构体的 示例代码片. type debugConfig struct { MaxQueueDepth int `json:"maxQueueDepth"` ...
- Linux 中使用 sort 指令分组排序详解
Linux 中使用 sort 指令分组排序详解 sort 中进行分组排序主要用到的选项为 -k,此文,我们着重于该选项的使用方式,用到的其它选项不做解释,有兴趣的同学可以查看帮助文档 1. 数据准备 ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- 32.【C/C++ 结构体全类型 (详解)】
C结构体的应用 (一).什么是结构体? (二).结构体的声明: 2.1介绍一下上面的结构体声明: 2.2struct声明的位置 2.3标记名的可省略性 (三).结构体变量的定义 3.1分配空间 3.2 ...
- 结构体字节对齐详解【含实例】
一.前言 结构体字节对齐属于老生常谈的问题,看似简单,却很容易忘记.而且因为结构体使用的普遍性,使得字节对齐也成为了一个不得不谈的话题. 二.什么是结构体字节对齐 假设现在有一个结构体如下,问你它的一 ...
- 结构体和联合体详解-定义及初始化
文章目录 前言 一.结构体 1.1结构体类型 1.2定义结构体变量 1.3 初始化结构体变量 1.4结构体变量的引用 二.结构体数组 2.1定义结构体数组 2.2初始化结构体数组 三.联合体 3.1初 ...
- c语言实现结构体变量private,C语言中结构体变量私有化详解
背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate ...
最新文章
- nyoj543遥控器
- Django-RQ介绍
- 【LeetCode】TreeNode类实现解析(java实现)
- GIF图片合集(用于网络请求图片用)
- Windows下动态库的制作与使用
- Python连接DB2数据库
- chattr 锁定文件
- nero platinum刻录光盘简要教程(文章末尾有教程链接)
- 京东用户行为数据分析报告(python)
- 别人对你好是因为你有利用的价值,而我就不同了
- 京东物流实时风控实践
- mac安装jekyll
- 高德API 经纬度转换地市区县(含读取文件)
- java-net-php-python-jsp网上拍卖系统计算机毕业设计程序
- 帆软大屏背景怎么设置_FineReport报表工具增加动态背景色
- Vim内同时对多行增加或删除相同的内容
- 【Bootstrap】一个兼容IE8、谷歌等主流浏览器的受众巨幕式风格页面
- C++的运算符重载http://blog.csdn.net/zgl_dm/article/details/1767201
- java在windows下启动jar包使用utf-8格式
- Arcgis使用教程(十二)ARCGIS地图制图之比例尺设置参数详解
热门文章
- Vue-elementUI实现PC端商城购物车计算
- mysql 流式查询_Mybatis流式查询避免OOM
- 解决 unexpected EOF while looking for matching `“‘
- C# 中的SqlCommand 的用法和它的几个方法
- 一个装逼小程序C++代码
- 如何快速搭建一个新项目的运营体系?
- 旋转矩阵(Rotation Matrix)
- 任意爬取!超全开源爬虫工具箱
- 亚马逊第二总部要选在华盛顿特区?
- ppt_DNA元基催化与肽计算_第四修订版_V00919