简谈俩种不同方式对vector容器的 自定义结构体进行排序

原创 2016年05月31日 21:16:19

俩种方法,自己容易忘所以记下来了

一:重载< 比较运算符,最后可以直接用sort()排序

     比如:

bool operator < (const Time r)const { return  hh * 3600 + mm * 60 + ss < r.hh * 3600 + r.mm * 60 + r.ss; }

二:自定义比较函数cmp,最后可以sort(a.begin(),a.end(),cmp)来实现    

    比如:

bool cmp(const Time &a,const Time &b)
{
	return a.hh * 3600 + a.mm * 60 + a.ss > b.hh * 3600 + b.mm * 60 + b.ss;
}
示例程序:

#include<iostream>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
struct Time
{
	int hh, mm, ss;
	Time(){}
	Time(int _hh, int _mm, int _ss) :hh(_hh), mm(_mm), ss(_ss){}
	//重载< 这个运算符
	bool operator < (const Time r)const { return  hh * 3600 + mm * 60 + ss < r.hh * 3600 + r.mm * 60 + r.ss; }

};
//定义一个比较大小的函数
bool cmp(const Time &a,const Time &b)
{
	return a.hh * 3600 + a.mm * 60 + a.ss > b.hh * 3600 + b.mm * 60 + b.ss;
}
using namespace std;
int m, n;
int main()
{
	//cin >> m >> n;
	vector<Time> a;
	a.push_back(Time(05, 06, 07));
	a.push_back(Time(15, 04, 07));
	a.push_back(Time(05, 06, 04));
	a.push_back(Time(14, 06, 07));
	a.push_back(Time(06, 07, 18));
	//用cmp函数 从大到小排
	sort(a.begin(), a.end(),cmp);
	for (int i = 0; i < a.size(); i++)
	{
		cout << "hh: "<<a[i].hh<<" mm: "<<a[i].mm<<" ss: "<<a[i].ss<< endl;
	}
	cout << endl;
	//通过重载< 符号,从小到大排
	sort(a.begin(), a.end());
	for (int i = 0; i < a.size(); i++)
	{
		cout << "hh: " << a[i].hh << " mm: " << a[i].mm << " ss: " << a[i].ss << endl;
	}
	return 0;
}

结果图如下:



版权声明:本文为博主原创文章,未经博主允许不得转载。

使用vector list等容器对字符串的排序

#include #include #include #include #include #include #include using namespace std; string & ...
  • wyfever
  • wyfever
  • 2016年09月28日 10:38
  • 156

C++中,自定义结构体vector的排序

C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升...
  • aguisy
  • aguisy
  • 2010年08月04日 10:04
  • 10137

vector的使用,结构体排序

在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。 1 基本操作 (1)头文件#include. (2)创建vector对象,vector vec; (3...
  • u011954647
  • u011954647
  • 2015年11月09日 16:43
  • 864

如何利用C++ vector的sort算法对元素是自定义类型进行排序

#include #include #include #include //sort函数头文件 using namespace std; class Student { publ...
  • superldxu
  • superldxu
  • 2016年11月09日 21:30
  • 832

c++用vector对结构体排序

C++中,当 vector 中的数据类型为基本类型时,我们调用std::sort函数很容易实现 对vector中数据成员的升序或降序排序,然而当vector中的数据类型为自定义结构体类型或者类时,我们...
  • u011388741
  • u011388741
  • 2013年09月06日 16:32
  • 1910

对vector 中的结构体元素排序

#include #include #include using namespace std; struct ss { int a,b; }; bool comp(const ss &a,co...
  • liulina603
  • liulina603
  • 2017年03月02日 08:15
  • 919

vector容器中存放结构体变量

转自:http://blog.sina.com.cn/s/blog_4762d6850100y1l1.html 先看以下的定义,指出哪些是非法的:     int i;     const in...
  • v_xchen_v
  • v_xchen_v
  • 2016年03月18日 22:02
  • 614

结构体简单排序-一级-二级

结构体简单的二级排序 sort 和 qsort. #include #include #include #include using namespace std; typedef struct ...
  • B08370108
  • B08370108
  • 2015年06月23日 10:17
  • 988

Java用vector容器排序

Java用vector容器排序 /** * 功能:定义一个Student数组,其中保存学生的基本信息,包括姓名,学号,性别,还有三门课的成绩 * 和课程对应的学分,计算出学分积,降序排序 ...
  • cutter_point
  • cutter_point
  • 2014年06月04日 17:58
  • 2132

STL—利用pair和vector对有序对类型排序

最近在学习数据结构的途中,碰到了需要将有序对排序的情况,因此学习了有关利用pair和vector进行排序的方法。...
  • J_Anson
  • J_Anson
  • 2015年09月06日 20:45
  • 2202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简谈俩种不同方式对vector容器的 自定义结构体进行排序
举报原因:
原因补充:

(最多只允许输入30个字)