`
gaofen100
  • 浏览: 1184392 次
文章分类
社区版块
存档分类
最新评论

STL排序函数

 
阅读更多

标准模板库(STL)在库头文件<algorithm>中提供了几个排序函数。STL类List就有自己的内置的sort函数。对容器来说,List的sort函数比一般的排序算法快,因为它对列表进行了优化,而且是交换指针,不是复制对象。在排序双向队列、字符串、数组、或矢量时,使用一般的sort函数,注意这个sort函数不稳定,值相同的元素不能保证处于相同的顺序位置上,为此应使用stable_sort函数。只有在需要对一个区域的元素进行排序或分区时,其他排序算法才比较高效,如果只需要对一定区域的元素进行排序,可以使用partial_sort。该区域在参数中指定,partial_sort_copy函数会生成一个容器,其中包含指定区域的元素。Nth_element 函数可以对一定区域的元素进行部分排序,但只能保证第n个元素是分界点。在数组中第n个元素左边的所有元素会小于或等于第n 个,第n个元素右边的所有元素则大于第n个元素的值。注意在任意顺序中都不需要指定区域。Nth_element函数用于确定中间点或百分点。
在根据某个条件对元素进行排序时,不是像nth_element函数那样对前n个元素排序,而是使用partion或stable_parition函数代替nth_element函数。这两个函数把容器分成两个区域,第一个区域包含满足特定条件的元素,第二个区域包含不满足特定条件的元素。最后,<algorithm>还包含merge和inplace_merge函数。但是,这两个函数都把已排序的区域作为参数,所以他们仅执行归并排序的一次调用。函数partition或stable_partition要求使用双向迭代器,而其他STL排序函数要求使用随机访问的迭代器。函数的规范如下所示。注意每个函数都有附加参数来确定排序的顺序,默认的比较运算符<。


分享到:
评论

相关推荐

    STL排序概述

    大致介绍了直接使用排序,与自己重新定义STL排序函数的方法。

    stl常用算法(Algorithms)介绍(stl排序算法、非变序型队列)

    算法由模板函数体现,这些函数不是容器类的成员函数,是独立的函数,它们可以用于STL容器,也可以用于普通的C++数组等. 头文件:#include 在STL的泛型算法中有4类基本的算法: 1)变序型队列算法: 可以改变容器内的数据...

    C 排序函数模板源码,MFC程序可用(冒泡).rar

    一个排序可以用的C 函数模板,无意间需要对字符串集合CStringArray进行排序,但标准模板库STL提供的函数模板sort虽然功能强大,不过有些不便,可能我不太习惯吧,于是才想着要自编一个排序函数模板,方便和我一样对C...

    C++函数STL速查手册.zip

    C++ STL参考相当全面, 而且例子也很好. 为chm格式, 彩色, 目录和索引链接找东西很方便,还包含大量常用函数,且按函数名首字母排序,方便查找 也有 C 的函数速查手册哦!!

    STL中algorithm部分函数的用法例子

    STL排序方法 在algorithm中sort 稳定排序 、堆排序的用法举例

    effective stl stl 技巧

    条款31:了解你的排序选择 条款32:如果你真的想删除东西的话就在类似remove的算法后接上erase 条款33:提防在指针的容器上使用类似remove的算法 条款34:注意哪个算法需要有序区间 条款35:通过mismatch或...

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

    解压后有5个CPP文件。全部VC6.0编译通过并运行。掌握STL的相关函数和算法能大大提高程序的效率。大大缩短程序代码。链表,栈,容器等可直接调用!

    标准模板库STL

    这样,在STL中迭代器就将算法和容器联系起来了,通过迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 STL迭代器部分主要由头文件和组成。 (4)函数对象(Function Objects)。一种...

    C++ 排序函数模板源码,MFC程序可用(冒泡)

    算法相关,算法 一个排序可以用的C++函数模板,无意间需要对字符串集合CStringArray进行排序,但标准模板库STL提供的函数模板sort虽然功能强大,不过有些不便,可能我不太习惯吧,于是才想着要自编一个排序函数模板...

    Effictive STL CHM中文版

    》灰《《常好的STL教程Effective STL 目录 容器 条款1: 仔细选择你要的容器 条款2: 小心对“容器无关代码”的幻想 条款3: 使容器里对象的拷贝操作轻量而正确 条款4: 用empty来代替检查size是否为0 条款5: ...

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

    简单举例普通数组、vector、对象排序 ,列举了默认排序、自定义排序,在自定义排序函数注释部分 点明了容易出问题的地方

    C++ STL开发技术导引(第5章)

    1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 1.8 名字空间 17 1.9 友员函数 20 1.10 内联函数 21 1.11 静态成员 22 1.12 本章小结 23 第2章 C++模板...

    Effective STL(中文)

    bound、upper_bound和equal_range的区别 条款46:考虑使用函数对象代替函数作算法的参数 条款47:避免产生只写代码 条款48:总是#include适当的头文件 条款49:学习破解有关STL的编译器诊断信息 条款...

    stl操作_c++stl操作_

    c++ stl操作常见的函数重载结构体优先队列排序等

    STL学习过程中的代码笔记

    通过调用STL提供的算法函数,可以轻松地实现排序、查找、遍历等操作,极大地提高了代码的效率和可读性。另外,STL中的迭代器也是我学习过程中的重要部分。迭代器允许我在容器中进行遍历,访问元素并进行修改,极大地...

    STL入门快速入门教程-----学习C++

    例如find可以用来在容器中查找某特定值的元素,for_each可以用来将函数应用到容器元素之上,sort用于对容器中的元素排序。 8;迭代器(iterators)STL重要组成部分,每个容器都有自己的迭代器,只有容器才可以进行...

    STL 源码剖析(侯捷先生译著)

    你将看到各种算法(排序、搜寻、排列组合、数据移动与复制…)的实现;你甚至将看到底层的memory pool 和高阶抽象的traits 机制的实现。那些数据结构、那些算法、那些重要观念、那些编程实务中最重要最根本的珍宝,...

    STL.rar_hash stl_stl 封装_搜索树

    详细的讲述一些C排序的函数 STL 几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash 到二叉树,从搜索到排序,从增加到删除......

    C++ STL 开发技术导引(第6章)

    1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 1.8 名字空间 17 1.9 友员函数 20 1.10 内联函数 21 1.11 静态成员 22 1.12 本章小结 23 第2章 C++模板...

    Sort排序用于CSV 文件数据归类(包括按数值、IP排序)2009-4-24,23:09

    该程序采用STL的sort排序函数,对CSV中的数据进行排序(排序时不包括首行(第0行)。可以按字符、数值和IP排序。排序方式还包括普通排序(整行作为一个参数进行比较)、将整行数据从指定列开始作为字符串起始按字符...

Global site tag (gtag.js) - Google Analytics