博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL: distance, unique
阅读量:4607 次
发布时间:2019-06-09

本文共 2029 字,大约阅读时间需要 6 分钟。

看remove duplicates from sorted array,发现如果用STL的话可以一句话搞定,如下:

class Solution {    public:        int removeDuplicates(int A[], int n) {            return distance(A, unique(A, A + n));        }};

去cplusplus.com上查了unique和distance的用法,如下:

unique:

equality (1)
template 
ForwardIterator unique (ForwardIterator first, ForwardIterator last);
predicate (2)
template 
ForwardIterator unique (ForwardIterator first, ForwardIterator last, BinaryPredicate pred);

去除数组中存在连续的重复的元素,只保留第一个。方法返回an iterator to the element that follows the last element not removed(表达能力拙计,直接上英文原话吧)。

也可以自定义predicate,相当于自己写remove的规则。

一个例子如下:

/ unique algorithm example#include 
// std::cout#include
// std::unique, std::distance#include
// std::vectorbool myfunction (int i, int j) { return (i==j);}int main () { int myints[] = {
10,20,20,20,30,30,20,20,10}; // 10 20 20 20 30 30 20 20 10 std::vector
myvector (myints,myints+9); // using default comparison: std::vector
::iterator it; it = std::unique (myvector.begin(), myvector.end()); // 10 20 30 20 10 ? ? ? ? // ^ myvector.resize( std::distance(myvector.begin(),it) ); // 10 20 30 20 10 // using predicate comparison: std::unique (myvector.begin(), myvector.end(), myfunction); // (no changes) // print out content: std::cout << "myvector contains:"; for (it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0;}

distance:

template
typename iterator_traits
::difference_type distance (InputIterator first, InputIterator last);

就是返回两个迭代器之间的距离。

回到一开始leetcode的那个例子,因为unique返回的是the iterator to the element which follow the last element,所以一头一尾直接算出了去除重复元素之后的数组的长度。

转载于:https://www.cnblogs.com/parapax/p/3633541.html

你可能感兴趣的文章
SQL Server以Online模式创建索引
查看>>
微软开放 .NET 框架源代码
查看>>
Jira迁移及内存调整
查看>>
Exchange Server 2010 SP2 新功能简述
查看>>
使用wxWidgets for C++从资源文件中静态装载图像
查看>>
提高数据库安全性的办法
查看>>
工作流编程循序渐进(8:状态机工作流)
查看>>
3.VMware View 4.6安装与部署-connection server(View Standard Server)
查看>>
Lync Server 2013 实战系列之六:标准版-安装和更新LyncServer 系统
查看>>
MariaDB日志审计 帮你揪出内个干坏事儿的小子
查看>>
Reporting Services目录临时数据库文件存在
查看>>
一个Windows Mobile, Windows Embedded CE工程师的找工经历(一)
查看>>
终于有了MSDN上的Blog
查看>>
PHPUnit学习03---使用Mock对象解决测试依赖
查看>>
java类型与Hadoop类型之间的转换
查看>>
允许SQL Server 2005远程连接
查看>>
微软为asp.net ajax和jquery创建了CDN
查看>>
Chris:怎样成为一名Android应用开发
查看>>
常见的makefile写法【转】
查看>>
和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】
查看>>