struct_and_sort_and_structSort
来源:互联网 发布:压缩的js还原 编辑:程序博客网 时间:2024/06/05 03:33
cpp/Algorithm/sort 和 利用sort对结构体排序
先说sort
cppreference里sort的几种用法:
1.
// sort using a standard library compare function objectstd::sort(s.begin(), s.end(), std::greater<int>());for (auto a : s) { std::cout << a << " ";} std::cout << '\n';
2.
// sort using a custom function object struct { bool operator()(int a, int b) { return a < b; } } customLess; std::sort(s.begin(), s.end(), customLess); for (auto a : s) { std::cout << a << " "; } std::cout << '\n';
3.
// sort using a lambda expression std::sort(s.begin(), s.end(), [](int a, int b) { return b < a; }); for (auto a : s) { std::cout << a << " "; } std::cout << '\n';
4.
常见的(在函数外/类外写)bool cmp()
#include<iostream>#include<algorithm>#include<array>using namespace std;// 定义sort按非增次序排bool comp(int a, int b) { return a>b;}int main() { array<int, 10> r={7,5,4,2,8,6,1,9,0,3}; sort(r.begin(),r.end(),comp); for(auto a:r) { cout<<a<<" "; } cout<<endl; return 0;}
对结构体排序
详细代码在GitHub
一. 用sort对结构体中某一值排序
当结构体有模板参数时,上面的’4.’会出错,其它方法可运行
0.
总
#include<stdio.h>#include<vector>#include<algorithm>#include<iostream>template<class T>struct Pack { T w1,p1; double pw;};
1.
template<class T>bool operator<(const Pack<T> &a1, const Pack<T> &a2) { return a1.pw>a2.pw;}
2.
/* struct { bool operator() (struct Pack<T> a1, struct Pack<T> a2) { return a1.pw>a2.pw; }}cmp;sort(pack.begin(), pack.end(),cmp); */
当结构体不带模板参数时,sort中的方法’1~4’均可行
二. 重载类型转换符 —《算法分析与设计————C++语言描述(2nd Edition)》
1.
template<class K, class D>struct E { operator K()const { return key; } // 重载类型转换运算符 K key; // 关键字可以比较大小 D data; // 其他数据};
0 0
- struct_and_sort_and_structSort
- i春秋的戏说春秋writeup
- Android监听home键的方法
- 开始学习
- C++(笔记)浅谈protected
- 关于define 的疑惑
- struct_and_sort_and_structSort
- 51nod 1066 bash游戏
- 修改VS属性页中的Inherited values
- 130. Surrounded Regions
- Linux运维笔记-文档总结-文档与权限
- XML之DOM解析方式
- ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5
- 从AdaBoost到GBDT(part 1)
- 线程池