zoukankan      html  css  js  c++  java
  • STL泛型算法总结

    泛型算法只是依赖于迭代器的操作,而不是依赖于容器

    泛型算法可以分为3大类:

    下面的vec和vec2代表相同类型的容器

    1.只读算法:只允许读取其输入范围内的元素,而不改变元素

    find(vec.cbegin(),vec.cend(),k)

    查找算法:前两个参数表示元素范围的迭代器,第三个参数k表示要查找的元素,查找成功则返回等于第一个元素的迭代器,查找失败返回尾后指针

    accumulate(vec.cbegin(),vec.cend(),0)

    求和算法:前两个参数表示元素范围的迭代器,第三个参数表示和的初始值,返回该类型的参数范围内的和,可以为int,string等

    equal(vec.cbegin(),vec.cend(),vec2.cbegin())

    比较算法:将第一个范围内的元素和第二个序列中的元素比较,如果对应元素都相等,返回true,否则返回false,这里默认第二个序列的元素数>=第一个范围内的元素数

    2.写容器元素算法:将元素写入输入范围

    fill(vec.cbegin(),vec.cend(),0)

    表示迭代器范围内的值都被置为0(假设vec存的是int型)

    fill_n(vec.begin(),vec.size(),0)

    表示从指定迭代器  vec.begin()  开始以后的vec.size()个元素的值都被置为0(假设vec存的是int型)

    注:上面的写算法不允许在空容器上调用,即容器中有几个元素,写算法才能写几个元素,只能修改,不能添加,如果想要添加只能使用插入迭代器(下篇会介绍)

    copy(vec.cbegin(),vec.cend(),vec2.cbegin())拷贝算法:将迭代器范围内的元素拷贝到vec2容器中,这里默认第二个容器的空间能够存储该迭代器范围内的元素

    replace(vec.cbegin(),vec.cend(),before,after)

    替换算法:将容器迭代器范围内的元素中 所有为before的元素替换为after的元素,before和after分别为存储类型的具体数值

    replace_copy(vec.cbegin(),vec.cend(),back_inserter(vec2),before,after)

    替换算法:将容器迭代器范围内的元素中 所有为before的元素替换为after的元素,并插入到vec2中,before和after分别为存储类型的具体数值

    3.重排容器元素算法

    sort(vec.cbegin(),vec.cend())

    排序算法:将迭代器范围内的元素按照定义的“<”来进行排序

    unique(vec.cbegin(),vec.cend())

    排序算法:将迭代器范围内的元素按照unique的标准库算法进行排序,使得不重复的元素出现在开始的位置,并且返回一个指向最后一个不重复元素之后的迭代器

    注:要真正删除容器中的元素,必须使用容器操作,泛型算法只是依赖于迭代器的,向容器中插入元素可以不必使用容器操作,可以使用插入迭代器操作。

  • 相关阅读:
    su命令cannot set groups: Operation not permitted的解决方法
    Docker 使用指南 (二)—— 搭建本地仓库
    90后小伙云上打造倾诉社交平台
    一起用HTML5 canvas做一个简单又骚气的粒子引擎
    PCB设计流程
    PCB设计检查
    C语言——输入输出函数
    (1)STM32使用HAL库操作GPIO
    几个输入输出函数的总结
    STM32标准库GPIO操作
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4751220.html
Copyright © 2011-2022 走看看