`

stl sort()以及自定义排序

 
阅读更多

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自定义排序准则 STL(Standard Template Library)是C++编程中非常重要的一部分,对于C++编程者来说, STL 的排序准则是一个非常重要的概念。今天,我们将讨论STL自定义排序准则的实现方法。 首先,我们来看...

    STL中自定义排序的使用

    这篇博客将深入探讨如何在STL中自定义排序规则,以满足特定的排序需求。 首先,`std::sort`函数的原型为: ```cpp template , class Compare&gt; void sort(RandomAccessIterator first, RandomAccessIterator last, ...

    详细解说 STL 排序(Sort)

    ### 详细解析 STL 排序(Sort):深入探索 C++ 的强大工具 #### 前言:为何STL是你必须掌握的技能? 对于任何程序员而言,数据结构与算法是编程旅程中的基石。从简单的链表操作到复杂的二叉树遍历,每一项技术都需...

    STL使用_Vector排序

    3. **自定义排序规则**:如果需要自定义排序规则(例如降序或根据特定属性排序),可以传递一个自定义的比较函数或函数对象作为第三个参数。例如,如果`vector`存储的是自定义类的对象,可以根据对象的某个成员变量...

    STL 1.算法之1.1Sort用法 及注意事项

    本篇将深入探讨`sort`函数的用法及其注意事项,特别是针对普通数组、`vector`以及对象排序的应用,同时也会提及自定义排序函数可能出现的问题。 ### 1. STL `sort`函数的基本用法 `sort`函数是C++ `&lt;algorithm&gt;`...

    STL_Sort 排序的资料

    总的来说,`STL_Sort`是C++中实现排序的首选工具,它提供了丰富的功能,包括自定义比较和并行化处理,使得在各种场景下都能有效地组织数据。理解和熟练运用`sort`函数,能够显著提升C++编程的效率和代码质量。

    详细解说STL排序

    若需要自定义排序规则,可以提供自己的比较函数或仿函数。例如,可以创建一个名为 compare 的函数: ```cpp bool compare(int a, int b) { return a &gt; b; // 升序排序 } ``` 然后在调用 sort 时传入这个函数: `...

    详细解说 STL 排序

    在这个详述STL排序的文章中,作者Winter ZT深入解析了STL中的排序功能,帮助开发者更好地理解和运用这些工具。 首先,前言部分强调了掌握STL的重要性,因为它是程序员避免重复实现基础算法的关键工具。STL几乎包含...

    STL.rar_stl.cpp_结构排序类

    在“stl.cpp”中,可能使用了sort算法对自定义结构的数组或容器进行排序。sort函数接受三个参数,分别是排序范围的起始和结束迭代器,以及一个可选的比较函数对象,用于确定元素的顺序。 4. 函数对象(仿函数):...

    sort排序 结构体题解

    cmp 函数是 sort 排序的核心,它可以自定义排序的规则。cmp 函数的标准写法是: `return a&gt;b;` 按从大到小排序 `return a;` 按从小到大排序(默认) cmp 函数可以自定义,也可以存在多个不同名称的 cmp 函数。 ...

    数据排序和查找——STL

    这里主要涉及了选择排序、冒泡排序以及几种查找算法,包括二分查找、顺序查找和双向顺序查找。 1. **STL排序算法**: - **选择排序**:选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素...

    STL代码大全(容器,链表,栈,算法,排序等)

    这个压缩包包含的代码示例涵盖了STL中的关键概念,如链表、容器、映射以及排序算法,非常适合学习和理解STL的使用。 1. **链表(List)** `list.cpp` 文件展示了STL中的`std::list`容器。`std::list`是一个双向...

    STL 中的常用的Vector Map Set Sort用法

    本篇文章将详细探讨STL中的四个常用组件:`vector`、`map`、`set`以及排序算法`sort`的用法。 1. `vector`: `vector`是STL中最基本的动态数组,它允许在运行时动态增加或减少元素。`vector`提供了许多便利的方法...

    STL应用——第一天课程sort.pptx

    在某些情况下,我们可能需要自定义排序规则,STL提供了以下三种方式来实现: - **(1) 自定义比较函数cmp** 定义一个布尔类型的函数,接受两个相同类型的参数,如果认为第一个参数应该排在第二个参数前面,则返回...

    STL排序概述

    这篇概述主要讲解了如何使用STL中的`sort`函数,以及如何根据具体需求选择合适的排序算法。 1.1 所有`sort`算法介绍 STL提供的排序算法主要包括`sort`、`stable_sort`、`partial_sort`和`partial_sort_copy`。这些...

    c++STL学习——排序算法技术总结和用法代码实例(二)

    在这个专题里,我们将深入探讨C++STL中的排序算法,主要关注如何使用它们以及背后的实现原理。 首先,C++STL中的排序算法主要有两个:`std::sort` 和 `std::stable_sort`。`std::sort` 是最常用的排序算法,它使用...

    c++STL学习——排序算法技术总结和用法代码实例(一)

    `std::sort`函数接受三个参数,分别为要排序的序列的起始和结束迭代器以及一个比较函数对象。默认的比较函数是`std::less`,用于升序排列,也可以自定义比较函数实现降序或其他排序规则。其内部采用三路快排,确保...

    STL入门 STL入门 STL入门 STL入门 STL入门 STL入门

    例如,你可以使用STL的sort算法对不同类型的容器进行排序,无论是vector、list还是deque,只要它们的迭代器支持必要的操作,sort都能工作。这是因为sort算法并不关心容器的具体实现,它只依赖于迭代器提供的访问和...

Global site tag (gtag.js) - Google Analytics