zoukankan      html  css  js  c++  java
  • STL 算法

    #include <algorithm> | #include <numeric> | #include <functional>

    1. 判断式

      - for 搜索算法:  传递一个函数或函数对象, 指定一个一元判断式可以作为搜索准则

      - for 排序算法:  传递一个函数或函数对象, 指定一个二元判断式可以作为排序准则

      - for 过滤:        传递一个一元判断式进行过滤

      - for 数值运算:   为某个算法指定一个数值运算. 如: 可以让通常用来求和的 accumulate()算法改为求积.

      - 判断式不应该在函数调用过程中改变参数的状态.

    2. STL算法分类:

      - 命名中的两个尾词

        - _if:  find(elem)/find_if(begin,end,functor/function), 前者直接查值, 后者按准则查找. 

        - _copy:  reverse()/reverse_copy() , 前者将区间中的元素颠倒次序, 后者逆序复制到另一个区间.

      - 非变动型算法

        - 不改变元素的次序和值. 通过input迭代器和forward迭代器工作, 因此可以作用于所有标准容器上.

        -  for_each() // 对每个元素执行某操作 

        -  count() // 返回元素个数 

        -  count_if() // 返回满足某一准则的元素个数 

        -  min/max_element() //返回最小/大元素的迭代器. 

        -  find() //查找等于某值的第一个元素 

        -  find_if() // 查找满足某准则的第一个元素 

        -  search_n() // 查找具有某特性的第一段"n个连续元素" 

        -  search() // 查找某子区间第一次出现的位置 

        -  find_end() // 查询某自取件最后一次出现的位置. 

        -  find_first_of() // 查找等于某几个值之一的第一个元素 

        -  adjacent_find() //查找连续两个相等的或者满足某准则的元素. 

        -  equal() // 判断两个区间是否相等. 

        -  mismatch() //返回两个序列的各组对应元素中, 第一对不相等的元素. 

        -  lexicographical_compare() // 判断某序列在"字典序"下是否小于另一序列. 

      - 由于string和STL是独立发展的, 在string中的查找算法和STL查找算法的名字不同. string中是: find()/rfind()/find_first_of()/find_last_of().

      - 变动型算法

        -  copy() // 从第一个元素开始, 复制某段区间. 

        -  copy_backward() // 从最后一个元素开始复制某段区间. 

        -  transform() // 变动(并复制)元素, 将两个区间的元素合并. 

        -  merge() //合并两个区间. 

        -  swap_ranges() // 交换两区间内的元素 

        -  fill() // 以给定的值替换每一个元素 fill_n() 替换 n 个 

        -  generate()/generate_n() // 以某项操作结果替换每一项/n项元素. 

        -  replace()/replace_all() //将具有特定值/符合某准则的元素替换为另一个. 

        -  replace_copy() // 复制整个区间并将具有某特定值的元素替换为指定值 

        -  replace_copy_if() // 复制整个区间, 将满足某准则的元素替换为指定值. 

        -  reverse() / reverse_copy() 

        -  rotate() / rotate_copy() 

        -  next_permutation() / prev_permutation() 

        -  random_shaffle() 

        -  partation() // 改变元素次序, 使符合某准则的移到前面. 

        -  stable_partation() // 与partation()相似, 但保持符合准则与不符合准则之间元素的相对位置. 

      - 移除型算法

        -  remove()/remove_if() // 移除指定值/满足准则的值 对应的元素. 

        -  remove_copy() // 将不等于某值的元素复制到其他地方. 

        -  remove_copy_if() //将不满足准则的元素复制到它处. 

        -  unique() //移除相邻的重复元素 

        -  unique_copy() // 移除相邻重复元素, 并复制到其他地方 

      - 排序算法

        -  sort() 

        -  stable_sort() // 排序并保持相等元素之间的相对次序 

        -  partial_sort() //排序, 知道前面n个元素就位. 

        -  partial_sort_copy() // 排序, 直到前n个元素就位, 结果复制到其他地方. 

        -  make_heap() // 将区间转化为一个heap 

        -  push_heap() // 将元素加入一个heap 

        -  pop_heap() // 从heap删除一个元素 

        -  sort_heap() // 对heap进行排序, 指定后就不是heap了.. 

      - 已序区间算法

        -  binary_serach() 

        -  includes() //判断某区间内的每一个元素是否都在另一个区间内. 

        -  lower_bound() / upper_bound() / equal_range()/merge()  

        -  set_union() / set_intersection() / set_difference() //求两个区间的并/交/差集 

        -  set_symmetric_difference() // 查找只出现在两区间之一的所有元素,形成一个已序区间   

        -  inplace_merge() //将两个连续的已序区间合并. 

      - 数值算法

        -  accumulate() // 组合所有元素(求和 / 乘积) 

        -  inner_product()  

        -  adjacent_difference() // 将每个元素和前一个元素组合. 

        -  partial_sum() // 将每个元素和前面的所有元素组合. 

  • 相关阅读:
    [读书笔记]-大话数据结构-4-栈与队列(二)-队列
    [读书笔记]-大话数据结构-4-栈与队列(一)-栈、共享栈和链栈
    [读书笔记]-大话数据结构-3-线性表(二)-线性表的链式存储
    [读书笔记]-大话数据结构-3-线性表(一)-线性表的顺序存储
    [读书笔记]-大话数据结构-2-算法
    [读书笔记]-大话数据结构-1-数据结构绪论
    Linux Shell脚本教程:30分钟玩转Shell脚本编程(笔记)
    scikit-learn学习
    xampp启动遇到的小问题
    选项卡小结
  • 原文地址:https://www.cnblogs.com/roger9567/p/4890104.html
Copyright © 2011-2022 走看看