C++ vector 排序(转载)
来源:互联网 发布:园林设计软件图库 编辑:程序博客网 时间:2024/05/16 05:42
最近做的东西,要将vector 中的内容输出,结果发现有些文件被交替反复打开,所以就想吧vector 中的元素排序,学习中发现下面这篇文章总结的挺好的,分享一下也~
C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢?有两种方法,下面的例子能很好的说明:
我们直接来看代码吧,比较简单,容易理解:
#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
struct AssessTypeInfo
{
unsigned int m_uiType; //类型ID
char m_szName[64];
unsigned int m_uiTotal; //总分数
bool operator <
{
return m_uiType < rhs.m_uiType;
}
bool operator >
{
return m_uiType > rhs.m_uiType;
}
}
int main()
{
vector<AssessTypeInfo > ctn ;
AssessTypeInfo a1;
a1.m_uiType=1;
AssessTypeInfo
a2.m_uiType=2;
AssessTypeInfo
a3.m_uiType=3;
ctn.push_back(a1);
ctn.push_back(a2);
ctn.push_back(a3);
//升序排序
sort(ctn.begin(), ctn.end(),less<AssessTypeInfo>()) ; //或者sort(ctn.begin(), ctn.end())
for ( int
printf("%d\n",ctn[i].m_uiType);
//降序排序
sort(ctn.begin(), ctn.end(),greater<AssessTypeInfo>()) ;
for ( int
printf("%d\n",ctn[i].m_uiType);
return 0
}
以上方法就可以实现升序排序,输出结果为 1
降序排序结果3
方法2 :
#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
struct AssessTypeInfo
{
unsigned int m_uiType; //类型ID
char m_szName[64];
unsigned int m_uiTotal; //总分数
};
bool lessmark(const AssessTypeInfo& s1,const AssessTypeInfo& s2)
{
return s1.m_uiType < s2.m_uiType;
}
bool greatermark(const AssessTypeInfo& s1,const AssessTypeInfo& s2)
{
return s1.m_uiType > s2.m_uiType;
}
int main()
{
vector<AssessTypeInfo > ctn ;
AssessTypeInfo a1;
a1.m_uiType=1;
AssessTypeInfo
a2.m_uiType=2;
AssessTypeInfo
a3.m_uiType=3;
ctn.push_back(a1);
ctn.push_back(a2);
ctn.push_back(a3);
sort(ctn.begin(), ctn.end(),lessmark) ; //升序排序
for ( int
printf("%d\n",ctn[i].m_uiType);
sort(ctn.begin(), ctn.end(),greatermark) ; //降序排序
return 0
}
以上方法就可以实现升序排序,输出结果为 1
降序排序结果3
方法2是一种比较简单的方法。
以上两种方法您可根据您自己的需求选择,并且以上两种方法在VC++6.0环境下编译通过,也是自己在实践过程中的总结,如有不妥的地方,欢迎您指出,至于为什么这样使用,请参考 stl算法中sort 部分。
- C++ vector 排序(转载)
- 用sort对vector排序(转载)
- C++:泛型编程vector(排序)
- 【转载】c排序
- C/C++中vector的操作(排序、删除)
- C++:泛型编程vector(成绩排序)
- vector 常用方法(转载)
- vector基本用法(转载)
- C++,vector 自定义类型的排序
- 转载 --vector
- 各种排序算法--C 转载
- object-c 排序算法(转载)
- object-c NSArray排序转载
- c++中vector排序的问题二(转载)
- c++中vector排序的问题二(转载)
- c++(vector)问题
- (转载)C/C++排序算法
- C++ C PlusPlus ,中的vector使用范例, 转载
- 新视野OJ 2301 [HAOI2011]Problem b (数论-gcd)
- java实现二叉树算法 - 查找
- java io 装饰者模式的应用
- 容我半世离殇,许你一世倾城
- UML_时序分析
- C++ vector 排序(转载)
- 详解Linux内核之双向循环链表 .
- 如何把vmware 10变成英文版。。。
- Selenium的演变过程
- 数组指针和指针数组,函数指针和指针函数
- UML_需求
- make jsoncpp under Linux
- C++容器:顺序容器,关联容器
- 大话设计模式--外观模式 Facade -- C++实现实例