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 ...
随机推荐
- AutoIt 函数学习之----Send函数
Send: 作用:向激活窗口发送模拟键击操作. 语法: send('按键'[,标志]) 参数: 按键:要发送的按键序列. 标志:[可选参数] 更改程序处理“按键”的方式: 标志 = 0 (默认),按 ...
- Oratop工具——实时数据库性能监控工具
在任何系统优化过程中,“80/20原则”是我们一定要关注的问题.简单的说,就是我们系统80%的性能问题.现象,都是有少数几个甚至一个问题造成的.这就需要我们面对复杂的系统性能问题的时候,要学会“拨开云 ...
- 解密电子书之四:MCU(freescale)
谈完国产的君正,让我们再看看呛了君正财路的freescale iMX51. 这是freescale近期的主打产品,用的是ARM Cortex A8架构,主频在消费电子领域最高可达800MHz,在工业领 ...
- Windows Socket I/O模型
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系.他们的信会被邮递员投递到他们的信箱里.这和Socket模型非常类似.下面我就以老陈接收信件为例讲解Socket I/O模型~~~ 一:s ...
- 面向对象程序设计-C++_课时13初始化列表
构造函数设置成员初值方法有两种:一种是在函数体内赋值,另一种是采用初始化列表的形式. 初始化列表BETTER 函数体内赋值 类名::类名(形参1,形参2,...形参n) { 数据成员1=形参1; 数据 ...
- _extend用法总结
针对对象数组: 后面的属性会覆盖更新前面的属性 看代码: <!DOCTYPE html> <html> <head> <meta charset=" ...
- python手记(9)
本博客所有内容是原创,未经书面许可,严禁任何形式的转 http://blog.csdn.net/u010255642 tab #!/usr/bin/env python # example noteb ...
- 回收进程用户空间资源 exit()函数 _exit()函数 atexit()函数 on_exit()函数
摘要:本文主要讲述进程的终止方式,以及怎样使用exit()函数来终止进程.回收进程用户空间资源:分析了exit()函数与_exit()函数,returnkeyword的差异.同一时候具体解读了怎样使用 ...
- 推荐两个不错的CAD二次开发(.Net)手册
推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...
- sql server varchar(10)和 nvarchar(10)存储数据长度
) 存储10个字母,英文标点符号等,5个汉字以及中文标点等. )存储10汉字.字母等,不区分中英文.