vector排序,支持子数组排序,sort(vec.begin(), ve.begin()+num, cmp)
#include<iostream> #include<vector> #include<list> #include <algorithm> using namespace std; typedef struct _MyNode{ int x; int y; //必须用到类型名称_MyNode,这就是使用typedef的好处 _MyNode(int x, int y){ this->x=x; this->y=y; } }MyNode; void printList(vector<MyNode> l) { vector<MyNode>::iterator iter=l.begin(); while(iter!=l.end()){ cout<<iter->x<<","<<iter->y<<endl; iter++; } cout<<endl; } bool cmp(MyNode n1, MyNode n2){ if(n1.x==n2.x){ return n1.y<n2.y; } return n1.x<n2.x; } int main(){ //1. 自定义排序 MyNode n1(2,3), n2(1,2), n3(3,9); vector<MyNode> l; l.push_back(n1); l.push_back(n2); l.push_back(n3); printList(l); sort(l.begin(), l.end(), cmp); printList(l); //2. 自然顺序排序 vector<int> l2; l2.push_back(4); l2.push_back(3); l2.push_back(1); l2.push_back(6); sort(l.begin(), l.begin()+3); /* vector<int>::iterator iter2=l2.begin(); while(iter2!=l2.end()){ cout<<*iter2<<endl; } */ cout<<endl; return 0; }
list排序,只支持整体排序,l.sort(cmp)
#include<iostream> #include<vector> #include<list> #include <algorithm> using namespace std; typedef struct _MyNode{ int x; int y; _MyNode(int x, int y){ this->x=x; this->y=y; } }MyNode; void printList(list<MyNode> l) { list<MyNode>::iterator iter=l.begin(); while(iter!=l.end()){ cout<<iter->x<<","<<iter->y<<endl; iter++; } cout<<endl; } bool cmp(MyNode n1, MyNode n2){ if(n1.x==n2.x){ return n1.y<n2.y; } return n1.x<n2.x; } int main(){ //1. list<...>只能全部排序, 而且调用的是list的public方法sort(cmp),不是<algorithm>头文件中的函数sort() MyNode n1(2,3), n2(1,2), n3(3,9); list<MyNode> l; l.push_back(n1); l.push_back(n2); l.push_back(n3); printList(l); l.sort(cmp); printList(l); return 0; }
相关推荐
STL自定义排序准则 STL(Standard Template Library)是C++编程中非常重要的一部分,对于C++编程者来说, STL 的排序准则是一个非常重要的概念。今天,我们将讨论STL自定义排序准则的实现方法。 首先,我们来看...
这篇博客将深入探讨如何在STL中自定义排序规则,以满足特定的排序需求。 首先,`std::sort`函数的原型为: ```cpp template , class Compare> void sort(RandomAccessIterator first, RandomAccessIterator last, ...
### 详细解析 STL 排序(Sort):深入探索 C++ 的强大工具 #### 前言:为何STL是你必须掌握的技能? 对于任何程序员而言,数据结构与算法是编程旅程中的基石。从简单的链表操作到复杂的二叉树遍历,每一项技术都需...
3. **自定义排序规则**:如果需要自定义排序规则(例如降序或根据特定属性排序),可以传递一个自定义的比较函数或函数对象作为第三个参数。例如,如果`vector`存储的是自定义类的对象,可以根据对象的某个成员变量...
本篇将深入探讨`sort`函数的用法及其注意事项,特别是针对普通数组、`vector`以及对象排序的应用,同时也会提及自定义排序函数可能出现的问题。 ### 1. STL `sort`函数的基本用法 `sort`函数是C++ `<algorithm>`...
总的来说,`STL_Sort`是C++中实现排序的首选工具,它提供了丰富的功能,包括自定义比较和并行化处理,使得在各种场景下都能有效地组织数据。理解和熟练运用`sort`函数,能够显著提升C++编程的效率和代码质量。
若需要自定义排序规则,可以提供自己的比较函数或仿函数。例如,可以创建一个名为 compare 的函数: ```cpp bool compare(int a, int b) { return a > b; // 升序排序 } ``` 然后在调用 sort 时传入这个函数: `...
在这个详述STL排序的文章中,作者Winter ZT深入解析了STL中的排序功能,帮助开发者更好地理解和运用这些工具。 首先,前言部分强调了掌握STL的重要性,因为它是程序员避免重复实现基础算法的关键工具。STL几乎包含...
在“stl.cpp”中,可能使用了sort算法对自定义结构的数组或容器进行排序。sort函数接受三个参数,分别是排序范围的起始和结束迭代器,以及一个可选的比较函数对象,用于确定元素的顺序。 4. 函数对象(仿函数):...
cmp 函数是 sort 排序的核心,它可以自定义排序的规则。cmp 函数的标准写法是: `return a>b;` 按从大到小排序 `return a;` 按从小到大排序(默认) cmp 函数可以自定义,也可以存在多个不同名称的 cmp 函数。 ...
这里主要涉及了选择排序、冒泡排序以及几种查找算法,包括二分查找、顺序查找和双向顺序查找。 1. **STL排序算法**: - **选择排序**:选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素...
这个压缩包包含的代码示例涵盖了STL中的关键概念,如链表、容器、映射以及排序算法,非常适合学习和理解STL的使用。 1. **链表(List)** `list.cpp` 文件展示了STL中的`std::list`容器。`std::list`是一个双向...
本篇文章将详细探讨STL中的四个常用组件:`vector`、`map`、`set`以及排序算法`sort`的用法。 1. `vector`: `vector`是STL中最基本的动态数组,它允许在运行时动态增加或减少元素。`vector`提供了许多便利的方法...
在某些情况下,我们可能需要自定义排序规则,STL提供了以下三种方式来实现: - **(1) 自定义比较函数cmp** 定义一个布尔类型的函数,接受两个相同类型的参数,如果认为第一个参数应该排在第二个参数前面,则返回...
这篇概述主要讲解了如何使用STL中的`sort`函数,以及如何根据具体需求选择合适的排序算法。 1.1 所有`sort`算法介绍 STL提供的排序算法主要包括`sort`、`stable_sort`、`partial_sort`和`partial_sort_copy`。这些...
在这个专题里,我们将深入探讨C++STL中的排序算法,主要关注如何使用它们以及背后的实现原理。 首先,C++STL中的排序算法主要有两个:`std::sort` 和 `std::stable_sort`。`std::sort` 是最常用的排序算法,它使用...
`std::sort`函数接受三个参数,分别为要排序的序列的起始和结束迭代器以及一个比较函数对象。默认的比较函数是`std::less`,用于升序排列,也可以自定义比较函数实现降序或其他排序规则。其内部采用三路快排,确保...
例如,你可以使用STL的sort算法对不同类型的容器进行排序,无论是vector、list还是deque,只要它们的迭代器支持必要的操作,sort都能工作。这是因为sort算法并不关心容器的具体实现,它只依赖于迭代器提供的访问和...