zoukankan      html  css  js  c++  java
  • STL 分类

    1、不改变序列的操作:
    all_of() // 序列上所有元素全部都是...
    any_of() // 序列上所有元素存在一个是...
    none_of() // 序列上所有元素没有一个是...

    count(first, last, elem) // 对序列(指定元素)计数
    find(first, last, elem)/find_if() // 查找序列中的一个元素 _if// 可自定义查找条件
    search() // 查找序列中的一段子序列

    adjacent_find(first, last) // 在序列中查找第一个挨在一起的两个值相同的指定元素

    --------------------------------------------------------------------------------------------
    2、改变序列的操作:
    copy(first, last, out)/copy_if() // 复制
    copy_bcakward()
    copy_n()

    move(first, last, out) / move_backward() // 取得整个序列的最右引用

    fill(first, last, num) / fill_n() // 类似memset,填充序列元素

    generate(first, last, fun) // 类似fill,使用一盒函数往序列中填充元素
    generate_n()

    remove(first, last, elem)/remoce_if() // 将要删除的元素移动到序列尾

    replace()/replace_if()
    replace_copy()/ replace_copy_if()

    reverse()/ reverse_copy() // 反转序列

    rotate()/rotate_copy() // 在序列中交换其中两部分的顺序

    unique(first, last)/ unique_copy() // 删除序列中连续重复的元素(即把冗余的元素移动到序列尾)

    swap()/ iter_swap()/swap_ranges(first, last, out) // 交换两个序列的内容

    iota(first, last, num) // 在一段区间上填上递增的数字

    transform(first, last, out, fun) //对序列中的每个元素都执行函数fun,(可以对序列本身没有影响,也可以改变序列本身)

    for_each(first, last, fun) // 类似transform,它是在本序列上进行操作,灵活性小


    shuffle() // 随机打乱序列中元素的顺序

    sample() // 从序列中随机挑选n个元素出来组成新的序列,每个元素只会被选择一次,如果n大于序列的长度,那么整个序列都会被选出来。

    ---------------------------------------------------------------------------------------------
    3、划分操作:
    partition() //

    stable_partition() // 划分的时候可以保持序列之前的相对顺序

    is_partiontioned()

    partition_copy()

    partition_point()

    ---------------------------------------------------------------------------------------------
    4、排序操作:
    sort()

    stable_sort()

    partial_sort / partial_sort_copy() // 对序列前半部分进行排序

    nth_element() // 这个算法保证第n个位置上的元素一定是有序的,然后以这个位置为界限,右边的每一个元素都大于左边的每一个元素。类似快排的思想

    is_sorted()

    is_sorted_until()

    ---------------------------------------------------------------------------------------------
    4、二分操作:
    lower_bound()
    upper_bound()

    binary_search()
    equal_range()

    ---------------------------------------------------------------------------------------------
    5、合并操作:
    merge() // 有序区间的合并,而merge通常用来把不同有序序列合并,因此需要一个容器来放结果。
    inplace_merge() // 两者的区别就在于inplace_merge可以在就地进行(一个序列,前半部分和后部分分别有序)而不用借助额外的空间,

    ---------------------------------------------------------------------------------------------
    6、比较操作:
    equal() // 判断两个序列是否完全相同

    lexicographical_compare() // 判断两个序列字典序

    mismatch() // 判断找出两个序列第一个不同的地方

    ---------------------------------------------------------------------------------------------
    7、集合操作:
    set_difference()

    set_union()

    set_intersection()

    set_symmetric_differences()

    includes()

    merge()

    ---------------------------------------------------------------------------------------------
    8、对操作:
    make_heap() // 把一串序列调整成最大堆的数组形式

    push_heap()

    pop_heap()

    sort_heap()

    is_heap() / is_heap_until() // 判断序列是否为最大堆以及在序列中找到一个最大的最大堆(以序列头为堆顶)

    ---------------------------------------------------------------------------------------------
    9、最大最小操作:
    min_element / max_element / min_max_element // 返回序列中最小(最大)值的位置

    min / max / minmax // 返回两者中较小(较大)的那个值

    clamp() // 给定一个区间,一个元素,它返回这个区间最靠近这个元素的值。

    10、排列操作:
    next_permutation()

    prev_permutation()

    is_permutation()

    ---------------------------------------------------------------------------------------------
    11、数值操作:
    accumulate()

    partial_sum() // 求前缀和,生成前缀和序列。

    inner_product()

    adjacent_difference()

    reduce()

    transform_reduce()

    inclusive_scan()

    exclusive_scan()

    transform_inclusive_scan()

    transform_exclusive_scan()

    gcd() // 最大公约数

    lcm() // 最小公倍数

    ---------------------------------------------------------------------------------------------
    12、未初始化内存上的操作:


    uninitialized_copy()

    uninitialized_copy_n()

    uninitialized_fill() / uninitialized_fill_n()

    uninitialized_move() / uninitialized_move_n(这个及以下都是C++17的算法)

    uninitialized_default_construct() / uninitialized_default_construct_n
    ()
    uninitialized_value_construct / uninitialized_value_construct_n
    destroy()
    destroy_at / destroy_n

    ---------------------------------------------------------------------------------------------

  • 相关阅读:
    Java NIO学习笔记---I/O与NIO概述
    JAVA多线程和并发基础面试问答
    Java线程面试题 Top 50
    Java并发编程:Timer和TimerTask
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:线程池的使用
    Java并发编程:阻塞队列
    程序猿写客户端,没有视觉设计师,怎么搞到图?
    hm nsis edit请求的操作需要提升
    MFC修改系统托盘的图标
  • 原文地址:https://www.cnblogs.com/shuang0109/p/9828959.html
Copyright © 2011-2022 走看看