C++ vector的排序------对于结构体vector, 需要自己实现比较
2016-03-20 23:42
686 查看
在很多面试中, 都会问到: 结构体作为map的key, 需要注意什么? 这个问题, 我在http://blog.csdn.net/stpeace/article/details/46553525中已经深入讨论过, 所以不再赘述。 本文来说说vector的排序, 最近刚好要涉及到, 所以来写个代码demo
由于结构体没有比较大小这一说法, 所以要实现结构体vector的排序, 必须自定义比较:
before Sort:
9 100
8 87
6 90
7 82
5 85
after Sort1:
5 85
6 90
7 82
8 87
9 100
after Sort2:
7 82
5 85
8 87
6 90
9 100
由于结构体没有比较大小这一说法, 所以要实现结构体vector的排序, 必须自定义比较:
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Msg { int id; int score; }; // 按id排列 bool selfDefinedSort1( const Msg &m1, const Msg &m2) { return m1.id < m2.id; } // 按score排列 bool selfDefinedSort2( const Msg &m1, const Msg &m2) { return m1.score < m2.score; } // 添加元素 void addToVector(vector<Msg> & vecMsg, const int &id, const int &score) { Msg msg; msg.id = id; msg.score = score; vecMsg.push_back(msg); } // 打印vector void printVector(vector<Msg> &vecMsg) { for(vector<Msg>::iterator it = vecMsg.begin() ; it != vecMsg.end() ; it++ ) { cout << it->id << '\t' << it->score << endl; } } int main() { vector<Msg> vecMsg; addToVector(vecMsg,9, 100); addToVector(vecMsg,8, 87); addToVector(vecMsg,6, 90); addToVector(vecMsg,7, 82); addToVector(vecMsg,5, 85); cout << "before Sort:" << endl; printVector(vecMsg); cout << "after Sort1:" << endl; sort(vecMsg.begin(), vecMsg.end(), selfDefinedSort1); printVector(vecMsg); cout << "after Sort2:" << endl; sort(vecMsg.begin(), vecMsg.end(), selfDefinedSort2); printVector(vecMsg); return 0; }结果:
before Sort:
9 100
8 87
6 90
7 82
5 85
after Sort1:
5 85
6 90
7 82
8 87
9 100
after Sort2:
7 82
5 85
8 87
6 90
9 100
相关文章推荐
- C++智能指针auto_ptr详解
- 线程池原理及创建(C++实现)
- 从C语言的C++头文件开始起底
- 我的c++第二次程序1
- C/C++中的函数指针
- 比较C#的委托与C语言的函数指针,以及用流程图来理解C#中事件,发布与订阅的逻辑
- 问题 G: C语言习题 输出月份
- 问题 F: C语言习题 不等长字符串排序
- 问题 E: C语言习题 等长字符串排序
- 问题 D: C语言习题 字符串比较
- 问题 C: C语言习题 字符串长度
- ACM——GCD算法
- 详解C++的JSON静态链接库JsonCpp的使用方法
- C++11智能指针——weak_ptr
- (C语言打印图形题5)编程,输入n,输出如下例(n=4)所示的高和上底均为n的等腰梯形。
- 问题 G: C语言习题 医生值班
- C/ C++ 常见编程问题
- C++函数指针
- (C语言打印图形题4)编程,输入n,输出如下例(n=4)所示的高为n的倒立等腰三角形。
- C注释转换到C++注释项目