sort(排序):

template <class RandomAccessIterator>void sort ( RandomAccessIterator first, RandomAccessIterator last );template <class RandomAccessIterator, class Compare>void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );该方法用于排序,comp用于指定元素比较的函数

类似的有stable_sort(保持比较相等元素的原顺序)

partial_sort(部分排序):
template <class RandomAccessIterator>void partial_sort ( RandomAccessIterator first, RandomAccessIterator middle,RandomAccessIterator last );template <class RandomAccessIterator, class Compare>void partial_sort ( RandomAccessIterator first, RandomAccessIterator middle,RandomAccessIterator last, Compare comp );

对序列进行部分排序,对first和middle之间的元素进行排序~~其余的不管

partial_sort_copy是该算法的copy版本:

template <class InputIterator, class RandomAccessIterator>RandomAccessIteratorpartial_sort_copy ( InputIterator first,InputIterator last,RandomAccessIterator result_first,RandomAccessIterator result_last );template <class InputIterator, class RandomAccessIterator, class Compare>RandomAccessIteratorpartial_sort_copy ( InputIterator first,InputIterator last,RandomAccessIterator result_first,RandomAccessIterator result_last, Compare comp );nth_element:
template <class RandomAccessIterator>void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last );template <class RandomAccessIterator, class Compare>void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last, Compare comp );

将第n个元素放在第n个位置

vector<int>::iterator it;

// set some values:
for (int i=1; i<10; i++) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9

random_shuffle (myvector.begin(), myvector.end());

// using default comparison (operator <):
nth_element (myvector.begin(), myvector.begin()+5, myvector.end());

结果为:

myvector contains: 3 1 4 2 5 6 9 7 8

关于二分查找的操作:
lower_bound:

template <class ForwardIterator, class T>ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last,const T& value );template <class ForwardIterator, class T, class Compare>ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last,const T& value, Compare comp );

该方法会找到序列中可以存放value的值的迭代器部分。与之相对应的方法是upper_bound方法可以如下使用:

int myints[] = {10,20,30,30,20,10,10,20};
vector<int> v(myints,myints+8); // 10 20 30 30 20 10 10 20
vector<int>::iterator low,up;

sort (v.begin(), v.end()); // 10 10 10 20 20 20 30 30

low=lower_bound (v.begin(), v.end(), 20); // ^
up= upper_bound (v.begin(), v.end(), 20); //

结果为:
lower_bound at position 3
upper_bound at position 6

equal_range:

template <class ForwardIterator, class T>pair<ForwardIterator,ForwardIterator>equal_range ( ForwardIterator first, ForwardIterator last, const T& value );template <class ForwardIterator, class T, class Compare>pair<ForwardIterator,ForwardIterator>equal_range ( ForwardIterator first, ForwardIterator last, const T& value,Compare comp );返回的是一个pair.pair.first是value的起始位置,pair.second是结束位置(不包括在内~)

binary_search(二分查找):
template <class ForwardIterator, class T>bool binary_search ( ForwardIterator first, ForwardIterator last,const T& value );template <class ForwardIterator, class T, class Compare>bool binary_search ( ForwardIterator first, ForwardIterator last,const T& value, Compare comp );

测试有序序列中是否包含要查找的元素。

转载于:https://www.cnblogs.com/macula7/archive/2011/04/13/2014463.html

整理下STL algorithms(3)相关推荐

  1. 好久没写博客了,改天要把原博客资料整理下,弄个链接什么

    好久没来写了,主要是最近再弄webform下的东东--asp.net+ajax,可是进度很慢,所以也没办法写一些心得什么的.感觉有点对不起博客.嘿嘿 原来的博客,也好久没去了,当初搬家主要就是因为那个 ...

  2. 整理下开发中常用的第三方库

    在日常开发中,我们常常使用一些第三方库.我就在这整理下我常用的第三方库.这只是我常用的,使用习惯不一定和别人相同.但用于日常开发足够了. 1. AFNetworking 这是用于网络请求的库,使用方法 ...

  3. 整理下使用yum localinstall做离线安装的点

    整理下使用yum localinstall做离线安装的点 最近也是要在一些本地环境安装点需要的东西,但是又不能联网,不能很好的使用yum,也不想用源码编译,因为麻烦. 所以,准备用yum locali ...

  4. 更新版:整理下苏生不惑开发过的那些工具和脚本

    苏生不惑第382篇原创文章,将本公众号设为星标,第一时间看最新文章. 苏生不惑这个公众号已经写了380多篇原创文章,分享过很多工具和脚本,其中有些是我自己写的,这里再整理下: 部分软件下载地址我都更新 ...

  5. 《野兽绅士》总结1——整理下领结,蜕变就从推开这扇门开始

    本系列来源于笔者阅读<野兽绅士>后的总结,希望各位帮助各位单身男性找到适合自己的另一半. 目录 准备好发动引擎了吗? 蜕变:我寻访了北美所有的约会专家 做个"野兽绅士" ...

  6. 整理下如何获取WANmac和WAN口连接状态、如何读取lan口的连接状态、协商速率及mac

    整理下如何获取WANmac和WAN口连接状态.如何读取lan口的连接状态.协商速率及mac 总体思路就是WAN读取连接状态waninfo_common 的EthernetState ,读取lan的连接 ...

  7. 整理下关于telnetd 脚本对登录账号限制

    整理下关于telnetd 脚本对登录账号限制 整体思路其实非常简单,就是加了登录判断,所示admin.senior就只开放部分指令,使用case 来控制,若是superadmin就按照原来的处理.

  8. 【跟学C++】C++STL标准模板库——算法详细整理(下)(Study18)

    文章目录 1.简介 2.STL算法分类及常用函数 2.2.变序算法(二) 2.2.1 替换算法(2个) 2.2.2 排序算法(6个) 2.2.3 分区算法(4个) 2.2.4 可用于排序容器的算法(3 ...

  9. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

最新文章

  1. OpenCV中图像旋转(warpAffine)算法的实现过程
  2. logstash mysql eror_Logstash安装记录(报错com.mysql.jdbc.Driver not loaded的解决)
  3. ActiveReports 报表应用教程 (14)---数据可视化
  4. RNN和LSTM的正向/前向传播-图示公式和代码
  5. 利用Boost影响Lucene查询结果的排序
  6. windows2003开机自动登陆桌面
  7. PaddlePaddle中内置数据集分析
  8. matlab函数anova,MATLAB进行单因素方差分析-ANOVA
  9. 拓端tecdat|python虎扑社区论坛数据爬虫分析报告
  10. Oracle数据库学习笔记(十五)--自连接
  11. Python基础语法回顾
  12. Hadoop2.8.5详细教程(四)Linux集群搭建+免密登录
  13. 知识图谱之WordNet
  14. 你还不会用python进行数据分析吗
  15. boot中jar包部署的方式读取classes下的文件
  16. 曝光量的计算方式是什么?
  17. ip r route -n
  18. mac安装pygraphviz找不到头文件
  19. 7-29 王小二分饼
  20. c++篇 cad.grx 入门,手动配置编译环境

热门文章

  1. ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
  2. 操作mysql_MySQL学习笔记之基础操作
  3. 正交试验设计例题及答案_正交表测试用例设计方法的特点是什么?
  4. 设计模式 工厂模式比较
  5. Ceres和g2o的配置和使用
  6. 软考信息安全工程师学习笔记三(1.3 信息安全管理基础)
  7. 华为荣耀20和x10比较_华为和荣耀旗舰该如何选?其实懂手机的朋友只选择前者...
  8. 小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类
  9. python学习笔记之random模块
  10. 2018-12-08 acm日常 HDU - 6292(模拟找最小)