整理下STL algorithms(3)
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个位置
// 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方法可以如下使用:
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)相关推荐
- 好久没写博客了,改天要把原博客资料整理下,弄个链接什么
好久没来写了,主要是最近再弄webform下的东东--asp.net+ajax,可是进度很慢,所以也没办法写一些心得什么的.感觉有点对不起博客.嘿嘿 原来的博客,也好久没去了,当初搬家主要就是因为那个 ...
- 整理下开发中常用的第三方库
在日常开发中,我们常常使用一些第三方库.我就在这整理下我常用的第三方库.这只是我常用的,使用习惯不一定和别人相同.但用于日常开发足够了. 1. AFNetworking 这是用于网络请求的库,使用方法 ...
- 整理下使用yum localinstall做离线安装的点
整理下使用yum localinstall做离线安装的点 最近也是要在一些本地环境安装点需要的东西,但是又不能联网,不能很好的使用yum,也不想用源码编译,因为麻烦. 所以,准备用yum locali ...
- 更新版:整理下苏生不惑开发过的那些工具和脚本
苏生不惑第382篇原创文章,将本公众号设为星标,第一时间看最新文章. 苏生不惑这个公众号已经写了380多篇原创文章,分享过很多工具和脚本,其中有些是我自己写的,这里再整理下: 部分软件下载地址我都更新 ...
- 《野兽绅士》总结1——整理下领结,蜕变就从推开这扇门开始
本系列来源于笔者阅读<野兽绅士>后的总结,希望各位帮助各位单身男性找到适合自己的另一半. 目录 准备好发动引擎了吗? 蜕变:我寻访了北美所有的约会专家 做个"野兽绅士" ...
- 整理下如何获取WANmac和WAN口连接状态、如何读取lan口的连接状态、协商速率及mac
整理下如何获取WANmac和WAN口连接状态.如何读取lan口的连接状态.协商速率及mac 总体思路就是WAN读取连接状态waninfo_common 的EthernetState ,读取lan的连接 ...
- 整理下关于telnetd 脚本对登录账号限制
整理下关于telnetd 脚本对登录账号限制 整体思路其实非常简单,就是加了登录判断,所示admin.senior就只开放部分指令,使用case 来控制,若是superadmin就按照原来的处理.
- 【跟学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 ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
最新文章
- OpenCV中图像旋转(warpAffine)算法的实现过程
- logstash mysql eror_Logstash安装记录(报错com.mysql.jdbc.Driver not loaded的解决)
- ActiveReports 报表应用教程 (14)---数据可视化
- RNN和LSTM的正向/前向传播-图示公式和代码
- 利用Boost影响Lucene查询结果的排序
- windows2003开机自动登陆桌面
- PaddlePaddle中内置数据集分析
- matlab函数anova,MATLAB进行单因素方差分析-ANOVA
- 拓端tecdat|python虎扑社区论坛数据爬虫分析报告
- Oracle数据库学习笔记(十五)--自连接
- Python基础语法回顾
- Hadoop2.8.5详细教程(四)Linux集群搭建+免密登录
- 知识图谱之WordNet
- 你还不会用python进行数据分析吗
- boot中jar包部署的方式读取classes下的文件
- 曝光量的计算方式是什么?
- ip r route -n
- mac安装pygraphviz找不到头文件
- 7-29 王小二分饼
- c++篇 cad.grx 入门,手动配置编译环境
热门文章
- ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
- 操作mysql_MySQL学习笔记之基础操作
- 正交试验设计例题及答案_正交表测试用例设计方法的特点是什么?
- 设计模式 工厂模式比较
- Ceres和g2o的配置和使用
- 软考信息安全工程师学习笔记三(1.3 信息安全管理基础)
- 华为荣耀20和x10比较_华为和荣耀旗舰该如何选?其实懂手机的朋友只选择前者...
- 小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类
- python学习笔记之random模块
- 2018-12-08 acm日常 HDU - 6292(模拟找最小)