STL入门--sort,lower_bound,upper_bound,binary_search及常见错误
首先,先定义数组
int a[10];
这是今天的主角.
这四个函数都是在数组上操作的
注意要包含头文件
#include<algorithm>
sort:
sort(a,a+10)
对十个元素进行排序,顺序为从小到大.
sort(a,a+10);
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
自定义sort
sort (a,a+10,Rule());
按照Rule给定的规则进行排序.
Rule函数的写法:(以比较个位数字为例)
struct Rule
{
bool operator()(const int &a,const int &b)
{
return a%>b%;
}
};
注意,这个要写在开头,main外面
binary_search
首先需要注意,是下划线,不要写错.
binary_search(a,a+10,7,排序规则)//以查找数字7为例
可以没有排序规则,也就是
binary_search(a,a+10,7)//查找数字7
但是,在查找之前,一定要注意要先排好序.也就是用一下sort.
sort binary_search的排序规则应保持一致
还有就是binary_search 返回的是 个数.
没有查找到的返回零,
所以可以用来做函数的返回值.
代码:
查找615的个数
int b= binary_search(a,a+,);
printf("%d",b);
printf("\n");
int bb= binary_search(a,a+,,Rule());
printf("%d",bb);
printf("\n");
lower_bound查找区间下标最小的且大于等于值的元素的地址
upper_bound查找区间下标最小的且大于值的元素的地址
int *p1,*p2;
p1=lower_bound(a,a+,);
printf("%d %d\n",a[p1-a],p1-a);
p2=upper_bound(a,a+,);
printf("%d %d\n",a[p2-a],p2-a);
注意:
p1-a是指其所在的下标
问题:
注意,只要用了sort,数组里的元素顺序就会改变,而查找必须是在对应的排序下的.所以在进行完一次查找时,需要进行下一次查找之前,要在进行一次需要规则的排序.
记住,它顺序在改变!!
STL入门--sort,lower_bound,upper_bound,binary_search及常见错误的更多相关文章
- STL中的二分查找———lower_bound,upper_bound,binary_search
关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函 ...
- STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())
一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以 ...
- stl lower_bound upper_bound binary_search equal_range
自己按照stl实现了一个: http://www.cplusplus.com/reference/algorithm/binary_search/ 这里有个注释,如何判断两个元素相同: Two e ...
- STL中的unique()和lower_bound ,upper_bound
unique(): 作用:unique()的作用是去掉容器中相邻元素的重复元素(数组可以是无序的,比如数组可以不是按从小到大或者从大到小的排列方式) 使用方法:unique(初始地址,末地址): 这里 ...
- STL algorithm算法lower_bound和upper_bound(31)
lower_bound原型: function template <algorithm> std::lower_bound default (1) template <class F ...
- [STL]lower_bound&upper_bound
源码 lower_bound template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardI ...
- lower_bound && upper_bound
用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last ...
- C++ lower_bound/upper_bound用法解析
1. 作用 lower_bound和upper_bound都是C++的STL库中的函数,作用差不多,lower_bound所返回的是第一个大于或等于目标元素的元素地址,而upper ...
- lower_bound/upper_bound example
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns ...
随机推荐
- HDU3686 Traffic Real Time Query【缩点+lca】
题目 City C is really a nightmare of all drivers for its traffic jams. To solve the traffic problem, t ...
- 【树形dp】 Bzoj 4472 Salesman
题目 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇 之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收 益.这些净收益可能是负数,即推 ...
- 运行python出现 SyntaxError: Non-ASCII character '\xe6' in file /Users/finup/Documents/python_project/test.py 解决办法
使用pycharm运行程序时出现以下错误 这个错误主要是由于python2的编码默认是ASCII,你的文件里有中文就必须要用utf-8编码,只要在文件需要在文件开头标注 #coding=utf-8如下 ...
- vim常用指令参考
(完)
- Oracle IO性能测试
Oracle IO性能测试 前言 最近发生了迁移测试库后(单节点迁移RAC)因为IO性能问题导致迁移后性能非常差的问题. 原本想在创建ASM磁盘组之前用Orion做测试,但是忘了做就没做结果出了这档子 ...
- 图片文件分布式存储方案设计模式(c#--sqlserver)
1.为了降低web服务器的压力,申请了2台文件服务器,用来存放图片文件.但是两台文件服务器如何让程序自己选择呢? 于是我用了一个算法,思路如下: 从状态表筛选出可用的图片服务器集合记作C,并获取集合的 ...
- SSTI-服务端模板注入
SSTI-服务端模板注入漏洞 原理: 服务端模板注入是由于服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而导致了敏感信息泄露. ...
- python 将指定文件夹中的指定文件放入指定文件夹中
import os import shutil import re #获取指定文件中文件名 def get_filename(filetype): name =[] final_name_list = ...
- java 面向对象(四十):反射(四)反射应用一:创建运行时类的对象
1.代码举例Class<Person> clazz = Person.class; Person obj = clazz.newInstance();System.out.println( ...
- Idea 自定义快捷代码输入 如syso => System.out.println()
前言 之前一直用的Eclipse System.out.println()的快捷代码输入 是 syso,但是在Idea 不好使用了,后来搜索了一番才知道,在Idea中的快捷输入是 sout,这里我就想 ...