vector 排序

  • 1. 数组排序,元素为整数
  • 2. 数组排序,元素为类

1. 数组排序,元素为整数

// 打印函数
void Print(vector<int>& nums)
{std::cout << "Sorted numbers:" << std::endl;for (size_t i = 0; i < nums.size(); i++){std::cout << nums[i];if (i != nums.size() - 1) {std::cout << ", ";}}std::cout << std::endl;
}// 比较函数
bool Lower(int left, int right)
{return left <= right;
}int main()
{// 正向取元素,默认升序vector<int> nums = { 5,3,1,2,4 };std::sort(nums.begin(), nums.end());Print(nums);// Sorted numbers:// 1, 2, 3, 4, 5// 反向取元素,默认升序,则实现降序效果std::sort(nums.rbegin(), nums.rend());Print(nums);// Sorted numbers:// 5, 4, 3, 2, 1// 自己编写排序规则std::sort(nums.begin(), nums.end(), Lower);Print(nums);// Sorted numbers:// 1, 2, 3, 4, 5
}

2. 数组排序,元素为类

  • 构造学生类
struct Student {string name;int score;
};
  • 打印函数
void PrintStudent(vector<Student> &students)
{std::cout << "Sorted students:" << std::endl;for (vector<Student>::const_iterator it = students.cbegin(); it != students.cend(); it++) {cout << "name: " << it->name << " score: " << it->score << endl;}cout << endl;
}
  • 排序函数
// 按名字升序排序
bool compName(const Student &lftStu, const Student &rhdStu)
{return lftStu.name <= rhdStu.name;
}// 按分数升序排序
bool compScore(const Student& lftStu, const Student& rhdStu)
{// 这里注意,如果写小于等于就报错!!!return lftStu.score < rhdStu.score;
}// 优先按分数由高到低排序,分数相同,按名字的字典序排序
bool compStudent(const Student& lftStu, const Student& rhdStu)
{if (lftStu.score > rhdStu.score) {return true;}else if (lftStu.score == rhdStu.score) {return lftStu.name <= rhdStu.name;} else {return false;}
}
  • 主函数,排序比较
int main()
{// 0 原始学生类vector<Student> students = {{"Tam",55},{"Tom",79},{"LiLei",85},{"Tomas",79},{"Randy",99}};// 1.默认sort排序,报错,原始排序无法排序std::sort(students.begin(), students.end());PrintStudent(students);// 2.按名称排序std::sort(students.begin(), students.end(),compName);PrintStudent(students);//Sorted students ://name: LiLei score : 85//name : Randy score : 99//name : Tam score : 55//name : Tom score : 79//name : Tomas score : 79students = {{"Tam",55},{"Tom",79},{"LiLei",85},{"Tomas",79},{"Randy",99}};// 3.按分数升序排序std::sort(students.begin(), students.end(), compScore);PrintStudent(students);//Sorted students ://name: Tam score : 55//name : Tom score : 79//name : Tomas score : 79//name : LiLei score : 85//name : Randy score : 99students = {{"Tam",55},{"Tom",79},{"LiLei",85},{"Tomas",79},{"Randy",99}};// 4.优先按分数由高到低排序,分数相同,按名字的字典序排序std::sort(students.begin(), students.end(), compStudent);PrintStudent(students);//Sorted students ://name: Randy score : 99//name : LiLei score : 85//name : Tom score : 79//name : Tomas score : 79//name : Tam score : 55
}

【C++】vector 排序相关推荐

  1. LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)

    1. 题目 有 n 个人,每个人都有一个 0 到 n-1 的唯一 id . 给你数组 watchedVideos 和 friends ,其中 watchedVideos[i] 和 friends[i] ...

  2. 用sort对vector排序(转载)

    用sort对vector排序 #include<vector> #include<string> #include <iostream> #include < ...

  3. C++ 二维vector排序(sort用法)

    C++二维vector排序 sort 函数的使用 sort 函数的使用 自定义排序函数 (目标:对 二维vector<vector> points中第二个元素进行排序) static bo ...

  4. C++ vector排序

    使用sort()函数(要添加引用algorithm)可以很方便地对数组进行排序,搭配自定义的compare函数可以实现多种对数据进行排序的方式,同样,对vector排序也可以使用sort函数,一般来说 ...

  5. C++中的结构体vector排序详解

    C++中的结构体vector排序详解 使用sort函数对一个vector很常用,前提是通文件中必须包含#include ,但是针对结构体vector排序则需要进行一定的改动.具体事例如下所示: // ...

  6. c++ sort()函数对二维数组vector排序

    c++ sort()函数对二维数组vector排序 sort (first, last) 对容器或普通数组中 [first, last) 范围内的元素进行排序,默认进行升序排序. 对于一个一维的数组, ...

  7. C++ vector 排序

    C++ vector 排序 2009-12-21 17:17 最近做的东西,要将vector 中的内容输出,结果发现有些文件被交替反复打开,所以就想吧vector 中的元素排序,学习中发现下面这篇文章 ...

  8. java.util.Vector排序

    Vector的排序: import java.util.*; class MyCompare implements Comparator //实现Comparator,定义自己的比较方法 { publ ...

  9. vector排序与查找

    本示例使用比较函数,函数对象进行vector的排序与查找操作. #include <algorithm> #include <vector> using namespace s ...

最新文章

  1. ARouter 源码历险记 (一)
  2. 不好意思,我真的不知道MySQL的窗口函数...
  3. asp.net导出GridView数据到Excel
  4. SAP系统财务模块的集团公司处理模式
  5. 【原创】请避免GO语言中的携程空跑(CPU突然激增)
  6. android.os.BinderProxy cannot be cast to
  7. MYSQL出错代码列表大全(中文)
  8. 系统和服务器的关系图,服务器与客户端关系图
  9. Transformer入门Transformer和CNN之间的区别
  10. Excel自动转曲线图的时PHP,excel表格数据转为曲线-如何将EXCEL表中的数据生成曲线...
  11. 有源滤波器设计工具枪战---凯利讯半导体
  12. 天使纪元392服务器维护,天使纪元公测什么时候能玩 天使纪元1月11日服务器什么时候能进...
  13. Keil编译错误 error: L6050U: The code size of this image (99784 bytes) exceeds the maxim
  14. 服务器主板信息花屏,清空BIOS设置,造成花屏问题的解决
  15. 健身耳机哪些品牌好?健身运动耳机推荐
  16. QCC3040---Message Broker module
  17. java整合支付宝遇到的坑及解决方法
  18. 英语学习经验分享(四六级、竞赛、口语)
  19. Android APP性能分析工具大全
  20. 富文本编辑器 Kindeditor 的使用和 常见错误

热门文章

  1. 短链接网址是如何生成的?
  2. Linux驱动开发:字符设备驱动开发实战
  3. #关于用Python完成(输入一个年份,输入一个月份,输出该年该月有多少天。输入英文逗号隔开的两个数字,代表年份和月份;输出该月的天数。输入输出样例:输入输出示例1:1997,10 31)
  4. Linux 拷贝文件:cp 命令
  5. Java 并发编程解析 | 如何正确理解Java对象创建过程,我们主要需要注意些什么问题?
  6. iOS 打电话、发短信、发邮箱 、跳转网站 功能(系统方法)
  7. 金属材料专业与计算机专业,金属材料工程
  8. 微信公众号开发--消息接收与回复
  9. 这些年来,第一次理解“贝叶斯公式”
  10. 重庆工商职业学院计算机类宿舍,重庆工商职业学院宿舍条件怎么样—宿舍图片内景...