STL中主要的算法(一)
一。replace()
替换算法将指定元素值替换为新值,使用原型例如以下,将迭代器[first,last)中值为old_value的元素所有替换为new_value值。
函数原型:
- template < class ForwardIterator, class T >
- void replace ( ForwardIterator first, ForwardIterator last,
- const T& old_value, const T& new_value );
參数说明:
二、swap()
我们先来看看swap的函数原型:
- template <class T> void swap ( T& a, T& b )
- {
- T c(a); a=b; b=c;
- }
三、copy()
元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素拷贝到由复制目标result给定的区间[result,result+(last-first))中。以下我们来看看它的函数原型:
函数原形:
- template<class InputIterator, class OutputIterator>
- OutputIterator copy(
- InputIterator _First,
- InputIterator _Last,
- OutputIterator _DestBeg
- );
參数
- _First, _Last
- 指出被复制的元素的区间范围[ _First,_Last).
- _DestBeg
- 指出拷贝到的目标区间起始位置
返回值
返回一个迭代器,指出已被复制的最后一个元素的下一个位置
四、copy_backward()
copy_backward算法与copy在行为方面相似,仅仅只是它的复制过程与copy背道而驰,其复制过程是从最后的元素開始复制,直到首元素复制出来。也就是说,复制操作是从last-1開始,直到first结束。这些元素也被从后向前拷贝到目标容器中,从result-1開始,一直复制last-first个元素。举个简单的样例:已知vector {0, 1, 2, 3, 4, 5},现我们须要把最后三个元素(3, 4, 5)拷贝到前面三个(0, 1, 2)位置中,那我们能够这样设置:将first设置值3的位置,将last设置为5的下一个位置,而result设置为3的位置,这样,就会先将值5拷贝到2的位置,然后4拷贝到1的位置,最后3拷贝到0的位置,得到我们所要的序列{3,
4, 5, 3, 4, 5}。以下我们来看一下copy_backward的函数原型:
函数原型:
- template<class BidirectionalIterator1, class BidirectionalIterator2>
- BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,
- BidirectionalIterator1 last,
- BidirectionalIterator2 result);
參数:
first, last
指出被复制的元素的区间范围[first,last).
result
指出拷贝到目标区间的详细位置[result-(last-first),result)
返回值:
返回一个迭代器,指出已被复制元素区间的起始位置
五、find_end()
find_end算法在一个序列中搜索出最后一个与还有一序列匹配的子序列。有例如以下两个函数原型,在迭代器区间[first1, last1)中搜索出与迭代器区间[first2, last2)元素匹配的子序列,返回首元素的迭代器或last1。
函数原型:
- template<class ForwardIterator1, class ForwardIterator2>
- ForwardIterator1 find_end(
- ForwardIterator1 _First1,
- ForwardIterator1 _Last1,
- ForwardIterator2 _First2,
- ForwardIterator2 _Last2
- );
- template<class ForwardIterator1, class ForwardIterator2, class Pr>
- ForwardIterator1 find_end(
- ForwardIterator1 _First1,
- ForwardIterator1 _Last1,
- ForwardIterator2 _First2,
- ForwardIterator2 _Last2,
- BinaryPredicate _Comp
- );
STL中主要的算法(一)的更多相关文章
- STL中的所有算法(70个)
STL中的所有算法(70个)----9种类型(略有修改by crazyhacking) 参考自: http://www.cppblog.com/mzty/archive/2007/03/14/1981 ...
- STL中的排序算法
本文转自:STL中的排序算法 1. 所有STL sort算法函数的名字列表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 ...
- STL中的查找算法
STL中有很多算法,这些算法可以用到一个或多个STL容器(因为STL的一个设计思想是将算法和容器进行分离),也可以用到非容器序列比如数组中.众多算法中,查找算法是应用最为普遍的一类. 单个元素查找 1 ...
- STL中sort排序算法第三个参数_Compare的实现本质
关于C++ STL vector 中的sort排序算法有三种自定义实现,它们本质上都是返回bool类型,提供给sort函数作为第三个参数. 重载运算符 全局的比较函数 函数对象 我认为从实现方式看,重 ...
- 快速排序及STL中的sort算法
快速排序基本思想是,对待排序序列进行划分(Partition),一次划分,选择一个元素作为枢轴,然后将所有比枢轴小的元素放到枢轴的左边,将比枢轴大的元素放到枢轴的右边.然后对该枢轴划分的左右子序列分别 ...
- STL中的算法
STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baidu.com/ding ...
- STL源码剖析(算法)
STL中算法是基于迭代器来实现的. 有了容器中迭代器的实现(对operator*.operator++等的重载),STL中大部分算法实现就显得很简单了. 先看一例关于find算法的实现: templa ...
- 谈谈 C++ STL 中的迭代器
C++中的迭代器和指针 在前面的内容中我们简单讲过,STL主要是由三部分组成 容器(container),包括vector,list,set,map等 泛型算法(generic algorithm), ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
随机推荐
- 内核级HOOK的几种实现与应用
实现内核级 HOOK 对于拦截.分析.跟踪系统内核起着致关重要的作用.实现的方法不同意味着应用侧重点的不同.如想要拦截 NATIVE API 那么可能常用的就是 HOOK SERVICE TABLE ...
- BeanUtils\DBUtils
BeanUtil: 需要导入 beanutil包和logging日志包 用于给对象属性赋值. setProperty与copyProperty区别: 这个问题搁置,还不会. 将map数据拷贝到对象中, ...
- javascript中数据类型转换
转换为数字: parseInt():转换为整数型数值:从下标0开始判断,若为数值型则继续直到遇到非数值,返回前面的整数值: 小数点无效,若0开始为非数值则返回NaN: 转换空字符串会返回NaN: 能转 ...
- JavaScript引用类型之Array数组的栈方法与队列方法
一.栈方法 ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法.具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构.栈是一种LIFO(Last In F ...
- KVC中setValuesForKeysWithDictionary:
本文转载于:http://my.oschina.net/u/2407613/blog/524879?p={{page}} 从字典映射到一个对象,这是KVC中的一个方法所提供的,这个方法就是 setVa ...
- csapp lab3 bufbomb 缓存区溢出攻击 《深入理解计算机系统》
这个实验主要是熟悉栈,和了解数据缓存区溢出的问题. 数据缓存区溢出:程序每次调用函数时,会把当前的eip指针保存在栈里面,作为被调用函数返回时的程序指针.在被调用程序里面,栈是向下增长的.所有局部变量 ...
- BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...
- easyui 验证控件 tooltip message显示位置
找了半天才发现是这个属性在控制,tipPosition:'left',官网那个demo,误人子弟.
- ThinkPHP第二十五天(自动完成、用户名密码PHP正则、移位或加密函数)
1.ThinkPHP自动完成功能 跟昨天的自动验证功能类似,也是需要在自定义的UserModel类,进行使用. 使用方法:定义$_auto属性 $_auto = array( array(完成字段,完 ...
- POJ 2110 Mountain Walking 二分+bfs
传送门 昨天看到这个题还以为是个脑残的dp, 然而脑残的是我. 题目意思就是从左上角走到右下角, 设x为路径上的最大值-最小值, 求x的最小值. 二分x, 对于每一个x, 枚举下界lower, low ...