• STL中主要的算法(一)


    一。replace()

           替换算法将指定元素值替换为新值,使用原型例如以下,将迭代器[first,last)中值为old_value的元素所有替换为new_value值。

    函数原型:

    1. template < class ForwardIterator, class T >  
    2.   void replace ( ForwardIterator first, ForwardIterator last,  
    3.                  const T& old_value, const T& new_value );  

         參数说明:

    first, last
    指出要替换的迭代器区间[first,last)
    old_value
    将要被替换的元素值
    new_value
    将要替换旧值的新值

    二、swap()

         我们先来看看swap的函数原型:

    1. template <class T> void swap ( T& a, T& b )  
    2. {  
    3.   T c(a); a=b; b=c;  
    4. }  
    5.   

    三、copy()

    元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素拷贝到由复制目标result给定的区间[result,result+(last-first))中。以下我们来看看它的函数原型:

    函数原形:

    1. template<class InputIterator, class OutputIterator>  
    2.    OutputIterator copy(  
    3.       InputIterator _First,   
    4.       InputIterator _Last,   
    5.       OutputIterator _DestBeg  
    6.    );  

    參数

    _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的函数原型:

    函数原型:

    1. template<class BidirectionalIterator1, class BidirectionalIterator2>  
    2.  BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,  
    3.                                         BidirectionalIterator1 last,  
    4.                                         BidirectionalIterator2 result);   

     參数:

           first, last
           指出被复制的元素的区间范围[first,last).
           result
           指出拷贝到目标区间的详细位置[result-(last-first),result)

     返回值:

            返回一个迭代器,指出已被复制元素区间的起始位置

    五、find_end()

          find_end算法在一个序列中搜索出最后一个与还有一序列匹配的子序列。有例如以下两个函数原型,在迭代器区间[first1, last1)中搜索出与迭代器区间[first2, last2)元素匹配的子序列,返回首元素的迭代器或last1。

           函数原型:

    1. template<class ForwardIterator1, class ForwardIterator2>  
    2.    ForwardIterator1 find_end(  
    3.       ForwardIterator1 _First1,   
    4.       ForwardIterator1 _Last1,  
    5.       ForwardIterator2 _First2,   
    6.       ForwardIterator2 _Last2  
    7.    );  
    8. template<class ForwardIterator1, class ForwardIterator2, class Pr>  
    9.    ForwardIterator1 find_end(  
    10.       ForwardIterator1 _First1,   
    11.       ForwardIterator1 _Last1,  
    12.       ForwardIterator2 _First2,   
    13.       ForwardIterator2 _Last2,  
    14.       BinaryPredicate _Comp  
    15.    );  
    16.   

  • 相关阅读:
    Array
    自底向上的单元测试&&程序设计思想
    如何从 100 亿 URL 中找出相同的 URL?
    个人博客开发之数据库设计
    SpringBoot 优雅整合Swagger Api 自动生成文档
    SpringBoot Validation参数校验 详解自定义注解规则和分组校验
    SpringBoot Validation优雅的全局参数校验
    Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
    SpringBoot优雅的全局异常处理
    SpringBoot2.4.x整合Mybatis-Plus3.4.x(详细教程)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4469207.html
Copyright © 2020-2023  润新知