unique & lower_bound C++
原来C++也有unique和lower_bound,只需头文件iostream
- unique
unique可以对数组进行相邻元素的“去重”,实现效果是把所有不重复的元素按顺序放在数组前面,剩余元素留在末尾。函数返回的是指针,表示最后一个唯一元素的位置的下一个地址值
假设a为大小为n的数组,且已经排好序,那么m=unique(a,a+n)-a,则m就是a中unique元素的个数,且a[:m]是已经去重后的数组,看一下例子就明白了:
int a[] = {,,,,,,};
cout<<unique(a,a+)-a<<endl;
//
for(int i=;i<;i++)
cout<<a[i]<<" ";
//1 2 3 4 6 4 6
- lower_bound
lower_bound(a,a+n,target)返回指向a[:n]中第一个≥target的元素的指针,用法如下:
int a[] = {,,,,,,};
cout<<lower_bound(a,a+,)<<endl;
//0xbffe70
cout<<lower_bound(a,a+,)-a<<endl;
//
cout<<lower_bound(a,a+,)-a<<endl;
//
unique & lower_bound C++的更多相关文章
- [模板总结] Java的一些模板
快速排序(数组a从小到大,参数1是待排序的数组,参数2是起始下标,参数3是终止下标): static void sort(int [] a, int l,int r){ int m = l+r> ...
- POJ2528 Uva10587 Mayor's posters
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...
- bzoj1935 [Shoi2007]园丁的烦恼
bzoj1935 [Shoi2007]园丁的烦恼 有N个点坐标为(xi,yi),M次询问,询问(a,b)-(c,d)的矩形内有多少点. 0≤n≤500000,1≤m≤500000,0≤xi,yi≤10 ...
- ACM中值得注意/利用的C++语法特性
C++ 的易踩坑点 随时补充 STL不能边循环边erase() //自己写的求交集RE了 for (set <int> ::iterator it = s.begin(); it != s ...
- 「STL中的常用函数 容器」
占个坑,下午在更 二分操作:lower_bound和upper_bound 存图/数列操作:vector容器 全排列:next_permutation和prev_permutation 字符串转数列: ...
- C++算法库学习__std::sort__对 vector进行排序_排序后就可以进行使用std::lower_bound进行二分查找(查找第一个大于等于指定值的迭代器的位置)__std::unique
std::sort 对vector成员进行排序; std::sort(v.begin(),v.end(),compare); std::lower_bound 在排序的vector中进行 ...
- Maximum Value(unique函数,lower_bound()函数,upper_bound()函数的使用)
传送门 在看大佬的代码时候遇到了unique函数以及二分查找的lower_bound和upper_bound函数,所以写这篇文章来记录以备复习. unique函数 在STL中unique函数是一个去重 ...
- STL中的unique()和lower_bound ,upper_bound
unique(): 作用:unique()的作用是去掉容器中相邻元素的重复元素(数组可以是无序的,比如数组可以不是按从小到大或者从大到小的排列方式) 使用方法:unique(初始地址,末地址): 这里 ...
- unique
作用: 元素去重,即“删除”序列中所有相邻的重复元素(只保留一个) (此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素占领了) (其实就是把多余的元素放到了最后面) 由于它“删除”的是相 ...
随机推荐
- JAVA继承:编译与运行的关系(编译看左边,运行看右边)
"成员变量,静态方法看左边:非静态方法:编译看左边,运行看右边." 意思是:当父类变量引用子类对象时(Fu f = new Zi();),在这个引用变量f指向的对象中,他的成员变量 ...
- C#控件基础
在说控件之前,还是有必要说一下如何创建项目的. 现在我们就不用创建控制台应用程序了,而是文件>新建>C#>Windows窗体应用程序.名称,位置自己选择. 创建好了大致就是这样了,可 ...
- C# AOP 面向切面编程之 调用拦截
有时候我们需要在代码中对方法调用进行拦截,并修改参数和返回值,这种操作叫做AOP(面向切面编程) 不过需要注意的是,AOP的效率很慢,在需要高效率场合慎用. 以下是C#的AOP方法: 首先建立一个控制 ...
- JavaAPI 中 <E> 与 <T> 的含义
今天看集合的代码,发现在泛型的使用时的区别,Collection<E>.List<E>,而Iterator<T>,那么<E>和<T>含义有什 ...
- How to change your password of your mysql account in WampServer
#1. use phpmyadmin to login mysql and click the account menu, and then click "Change the passwo ...
- linux学习(十)find命令、Linux文件后缀名、Linux和windows文件互传
一.和find相关的几个搜索命令,了解即可. 1.1 which [root@iZ25lzba47vZ ~]# which ls alias ls='ls --color=auto' /usr/bin ...
- gulp learning note
为啥写这一片文章呢? 主要是为了温故而知新和分享,也是为了更加促进自己的学习! 前端自动化工具很多 有grunt gulp webpack 等 这次主要分享下gulp的学习经验,让自己更好的总结 ...
- JavaNIO缓冲区
package com.nio.test; import java.nio.ByteBuffer; import org.junit.Test; /** * * @author fliay * * 一 ...
- Android 开发笔记___图像视图__简单截屏
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- mysql5.7.16安装 初始密码获取及密码重置
在window7下面安装mysql5.7.16,出现一个问题,在初始化时,默认生成了一个密码,导致连接不了数据库.而在5.7以前,默认密码是空的,可以不用密码即可进入数据库.5.7之后的就遇到坑了,下 ...