首先,先定义数组 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给定的规则进行排序. Ru…
关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提). Tips:1.在检索前,应该用sort函数对数组进行从小到大排序.     2.使用以上函数时必须包含头文件:#include < algorith…
一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search  -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以下记录一下这两个函数: (2)ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置: (3)ForwardIter upp…
自己按照stl实现了一个:   http://www.cplusplus.com/reference/algorithm/binary_search/ 这里有个注释,如何判断两个元素相同: Two elements, a and bare considered equivalent if (!(a<b) && !(b<a)) lower_bound返回!(*it<val) ,所以binary_search 只要再判断 !(val<*it) 即可. template…
unique(): 作用:unique()的作用是去掉容器中相邻元素的重复元素(数组可以是无序的,比如数组可以不是按从小到大或者从大到小的排列方式) 使用方法:unique(初始地址,末地址): 这里要注意的是: 1.unique()函数返回值不是去重后容器中元素的数量,而是去重后容器中的末地址.也就是说,如果想得到去重后容器中元素的数量的话还要减去初始地址. 2.unique函数在去重的时候不会扔掉重复元素,而是会把它放在容器的末尾,也就是说数组的长度一直没有变化. 举一个例子: #inclu…
lower_bound原型: function template <algorithm> std::lower_bound default (1) template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val); custom (2) template <class Forw…
源码 lower_bound template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator it; iterator_traits<ForwardIterator>::difference_type count, step; count = d…
 用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last)具有与value相等的元素(s),便返回一个迭代器,指向其中第一个元素.如果没有这样的元素存在,便返回“假设这样的元素存在是应该出现的位置”.也就是说,它会返回一个迭代器,指向第一个“不小于value的元素”.如果value大于[first,last)内的任何一个元素,则返回last.以稍许不同的…
1. 作用           lower_bound和upper_bound都是C++的STL库中的函数,作用差不多,lower_bound所返回的是第一个大于或等于目标元素的元素地址,而upper_bound则是返回第一个大于目标元素的元素地址. 从定义就可以看出两者的差别只差在是否取等的的地方  那何必要设置两个函数呢(bushi 2.使用条件            用lower_bound/upper_bound进行二分查找时必须保证查找区间为升序序列! 什么是升序序列?你小学老师没教过…
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns an iterator pointing to the first element in the range [first,last) which does not compare less than val. Return iterator to upper bound Returns an i…