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 ...
随机推荐
- 5 Logistic回归(二)
5.2.4 训练算法:随机梯度上升 梯度上升算法:在每次更新回归系数时都需要遍历整个数据集,在数十亿样本上该算法复杂度太高. 改进方法:随机梯度上升算法:一次仅用一个样本点更新回归系数. 由于可以在新 ...
- [转]iOS UIAppearance使用详解
在iOS 5以前,自定义原生控件的外观并没有原生支持,因此开发人员感觉很麻烦.开发人员经常面临的问题是修改一个控件所有实例的外观.解决这个问题的正确方法是重写一遍控件.但由于这么做非常费时,一些开发人 ...
- 一个简单的AMD模块加载器
一个简单的AMD模块加载器 参考 https://github.com/JsAaron/NodeJs-Demo/tree/master/require PS Aaron大大的比我的完整 PS 这不是一 ...
- C++设计模式之工厂模式
//产品父类声明#pragma once #include "iostream" using namespace std; class Product { public: virt ...
- C#的线程池的那些事
最近在做站时发现,线程池的问题很棘手,所以总结了一篇关于线程池的文章,原文地址:http://www.shuonar.com/blog/ac16496b-87ec-4790-a9ea-d69bbffa ...
- bash代码
bash代码: #!/bin/bash MySQLSTARTUP="/data/3306/mysql" DbProcessCount=`ps -ef|grep mysql|grep ...
- HDU 4308 BFS Saving Princess claire_
原题直通车:HDU 4308 Saving Princess claire_ 分析: 两次BFS分别找出‘Y’.‘C’到达最近的‘P’的最小消耗.再算出‘Y’到‘C’的最小消耗,比较出最小值 代码: ...
- Ubuntu14.04 Server Apache2+subversion环境搭建
自从工作后,发现之前的代码开发太随便啦,于是经过不到两年的工作积累,打算在自己开发软件的过程中好好管理自己的项目.于是打算搭建自己的项目服务器,去年搭建过一次,但是由于没有记录,现在需要再来一遍,好多 ...
- mysql字符集编码乱码测试如下
创建三个表tb_latin1,tb_utf8,tb_gbk,编码分别为latin1/utf8/gbk “你好a”字符串编码如下GBK : %C4%E3 %BA%C3 %61UTF-8 : %E4%BD ...
- 达内TTS6.0课件oop_day01