前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++简明教程】Python和C++指定元素排序比较

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

作者头像
机器视觉CV
发布2020-08-18 14:10:15
3580
发布2020-08-18 14:10:15
举报
文章被收录于专栏:机器视觉CV机器视觉CV

Python 中的排序

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

列表的排序

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

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

字典排序

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

C++ 中的排序

对 vector 排序

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

代码语言:javascript
复制
#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 ,我们也可以指定根据哪个元素进行排序

代码语言:javascript
复制
#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 中,接着对学生的年龄进行排序

代码语言:javascript
复制
#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;
}

排序前

排序后

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器视觉CV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python 中的排序
    • 列表的排序
      • 字典排序
      • C++ 中的排序
        • 对 vector 排序
          • 对 2 维vector 排序
            • 对结构体进行排序
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档