【C++简明教程】Python和C++指定元素排序比较
发布日期:2021-05-07 01:24:23 浏览次数:10 分类:技术文章

本文共 2569 字,大约阅读时间需要 8 分钟。

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

重磅干货,第一时间送达
本文转自|机器学习初学者

Python 中的排序

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

列表的排序

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

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

字典排序

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

C++ 中的排序

对 vector 排序

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

#include
#include
#include
using namespace std;int main() { vector
 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
#include
#include
using namespace std;# 根据第二个元素进行排序bool sort_by_second_val(vector
 v1, vector
 v2) { return v1[1] > v2[1];}int main() {    // 模拟一个输入 vector < vector
> arr; for (int i = 0; i < 10; i+=2) {  vector
 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
#include
#include
#include 
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
 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“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

上一篇:3分钟读懂机器人视觉:单目、双目、多目、全景、混合...
下一篇:博士笔记 | 深入理解深度学习语义分割

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月06日 23时57分45秒