【C++简明教程】Python和C++指定元素排序比较

小白学视觉 2021-04-07 10:41:19
c++ Python OpenCV


点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达


本文转自|机器学习初学者

Python 中的排序

在 Python 中,常用的排序就是 sorted ,对于列表这种数据结构来说,还有 sort 方法

列表的排序

使用 sort 方法进行排序,以第二个值进行升序排序,列表的 sort 方法是原地排序

另外一种排序方法是 sorted ,此方法不是原地排序,以第一个值进行排序,同样也是默认升序排序

字典排序

有时候我们也需要对字典进行排序,也是使用 sorted 函数,不过对字典排序后返回的是列表,列表中是元组(tuple)

C++ 中的排序

对 vector 排序

要对 vector 容器中的元素排序,可以使用 algorithm 算法库中的 sort 函数

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

int main() {
 vector<int> a;
 cout << "sort before" << endl;
 for (int i = 0; i <10; i++){
  a.push_back(10-i);
  cout << a[i] << "  ";
 }
 cout << endl;
 cout << "sort after" << endl;
 sort(a.begin(), a.end());  // 
 for (int i = 0; i < 10; i++)
 {
  cout << a[i] << "  " ;
 }
 cout << endl;
 return 0;
}

对 2 维vector  排序

类似于 Python ,我们也可以指定根据哪个元素进行排序

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

# 根据第二个元素进行排序
bool sort_by_second_val(vector<int> v1, vector<int> v2) {
 return v1[1] > v2[1];
}

int main() {
    // 模拟一个输入
 vector < vector<int>> arr;
 for (int i = 0; i < 10; i+=2)
 {
  vector<int> temp;
  temp.push_back(i);
  temp.push_back(i+1);
  arr.push_back(temp);
 }
    // 排序前:arr = [[0, 1], [2, 3], [4, 5], [6, 7],[8, 9]]
 sort(arr.begin(), arr.end(), sort_by_second_val);
    // 排序后:arr = [[8, 9], [6, 7], [4, 5], [2, 3],[0, 1]]
 return 0;
}

对结构体进行排序

模拟一个学生管理系统,依次创建学生信息,然后加入到 vector 中,接着对学生的年龄进行排序

#include<vector>
#include<iostream>
#include<algorithm>
#include <string.h>
using namespace std;

struct Studen{
 string name;
 int age;
};

bool sort_by_age(Studen s1, Studen s2) {
 return s1.age<  s2.age;

}

int main() {
 vector<Studen> studens;  // 用来存储所有学生的信息
 Studen s1, s2, s3;   // 创建 3 个学生
 s1.name = "xx";
 s1.age = 20;
 studens.push_back(s1);

 s2.name = "yy";
 s2.age = 18;
 studens.push_back(s2);

 s3.name = "zz";
 s3.age = 10;
 studens.push_back(s3);

 sort(studens.begin(), studens.end(), sort_by_age);

 return 0;
}

排序前

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复: 扩展模块中文教程 即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


本文分享自微信公众号 - 小白学视觉(NoobCV)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[小白学视觉]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4581492/blog/5010677

  1. Do you need to learn database to learn Python!
  2. Python描述 LeetCode 80. 删除有序数组中的重复项 II
  3. C++/python描述 AcWing 94. 递归实现排列型枚举
  4. C++/python描述 AcWing 92. 递归实现指数型枚举
  5. Python描述 LeetCode 88. 合并两个有序数组
  6. 苏州大学计算机考研 复试机试真题2013-2021真题及Python题解
  7. Python描述 LeetCode 781. 森林中的兔子
  8. 字典和json的区别是什么?Python学习
  9. Python describes leetcode 80. Removing duplicate items from ordered arrays II
  10. C + + / Python description acwing 94. Recursive implementation of permutation enumeration
  11. C + + / Python description acwing 92. Recursive implementation of exponential enumeration
  12. Python describes leetcode 88. Merging two ordered arrays
  13. Real computer test questions 2013-2021 of computer postgraduate entrance examination of Soochow University and python solutions
  14. The rabbit in the forest
  15. Python中的魔法属性
  16. What's the difference between dictionary and JSON? Python learning
  17. Magic properties in Python
  18. 字典和json的区别是什么?Python学习
  19. What's the difference between dictionary and JSON? Python learning
  20. python刷题-字母图形
  21. Python brush questions - letter graphics
  22. Python数据分析入门(七):Pandas层级索引
  23. Introduction to Python data analysis (7): Pandas hierarchical index
  24. Python 操作腾讯云短信(sms)详细教程
  25. Python operation Tencent cloud SMS (SMS) detailed tutorial
  26. Python数据可视化,完整版实操指南 !
  27. Python data visualization, full version of the practical guide!
  28. 上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据
  29. 上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构
  30. Using pandas to read data from various files
  31. Hands on pandas, take you to play with data (1) -- detailed explanation of pandas data structure with examples
  32. Pandas数据结构基础用法
  33. Basic usage of pandas data structure
  34. Python读取ini配置文件,保存到对象属性
  35. Python reads the INI configuration file and saves it to the object properties
  36. Foundation of Python: classes in Python
  37. python刷题-闰年判断
  38. python刷题-01字串
  39. How to judge leap year
  40. Python brush title-01 string
  41. 安装python
  42. 按尺寸切片pandas数据集DataFrame到多个文件
  43. Install Python
  44. Slice the pandas dataset dataframe to multiple files by size
  45. python 求最大值、最小值、平均值
  46. Finding maximum, minimum and average in Python
  47. 认识Python解释器和PyCharm编辑器
  48. Know Python interpreter and pycharm editor
  49. Python 小数据池和代码块缓存机制
  50. Python small data pool and code block caching mechanism
  51. python刷题-序列求和
  52. python刷题-圆的面积
  53. Sequence summation in Python
  54. The area of a circle
  55. Python functions, advanced syntax and usage
  56. Teach you to crawl novels in Python! Who can pay for novels these days!
  57. Python入门学习之:10分钟1500访问量
  58. Introduction to Python: 1500 visits in 10 minutes
  59. 数据分析之Pandas合并操作总结
  60. OpenCV-Python 雪花飘落特效