课程咨询 : 020-87532245 24小时热线:15622781509 咨询QQ:3061057839

广州C++培训 > 达内新闻 > C++头文件之algorithm
  • C++头文件之algorithm

    发布:广州C++培训      来源:达内新闻      时间:2017-02-10

  • 广州C++培训机构的老师这一期讲的知识点是C++头文件系列(algorithm)。

    简介

    algorithm头文件是C++的标准算法库,它主要应用在容器上。因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的,也就是说,具有低耦合性。因此,任何数据结构都能使用这套算法库,只要它具有相应的迭代器类型。

    算法类别

    非修改性顺序操作(Non-modifying sequence operations)

    可变顺序操作(Mutating sequence operations)

    排序和关系操作(Sorting and related operations)

    C库算法(C library algorithms)

    算法版本

    用过这个算法库的人都知道,里面的很多算法都是成对出现的,一个概念的算法经常有多个版本:

    in-place version:普通版本,直接操作对迭代器进行操作。

    copying version:拷贝版本,需要传入输出迭代器作为拷贝的destination。该版本一般带有copy字样。

    predicate version:谓词版本,需要传入谓词作为判断的标准。该版本一般带有if字样。

    Non-modifying sequence operations

    all_of:判断是否范围内的所有元素都满足条件。

    any_of:判断是否范围内的所有元素中有一个满足条件。

    none_of:判断是否范围内的所有元素中没有一个满足条件。

    for_each:对指定范围内的每一个元素进行指定的操作。

    find、find_if、find_if_not:在指定范围中查找满足某个条件(值相等、条件满足、条件不满足)的元素。

    find_end:在指定序列中查找最后一个相等(或满足谓词条件)子序列。

    find_first_of:在指定序列中查找第一个出现在另一个序列中(或满足谓词条件)的元素。

    adjacent_find:在指定序列中查找第一个相等(值相等、满足条件)的元素对(2个元素)。

    count、count_if:对制定序列中的满足条件(值相等、满足条件)的元素进行计数。

    mismatch:给定两个元素序列,返回第一个不匹配(值不相等、不满足条件)的元素位置,以一个迭代器对指出。

    equal:判断两个序列是否相等(值相等、满足谓词条件)。

    is_permutation:判断是否一个序列是另一个序列的排列,即只有排列方式不相等(值不相等、不满足谓词条件)。

    search、search_n:在给定序列中查找子序列或者n个重复的元素序列。

    Mutating sequence operations

    copy、copy_n、copy_if、copy_backward:拷贝序列、拷贝序列中前n个元素、拷贝序列中满足条件的、从后往前拷贝序列。

    move、move_backward:移动序列、从后往前移动序列(移动后,任然可以对源序列进行操作,但元素值是未指定的)。

    swap、iter_swap:逐元素交换序列、交换两个序列。

    transform:对一个序列进行变换并输出、对两个序列进行变换并输出(变换通过自定义谓词来实现)。

    replace、replace_if、replace_copy、replace_copy_if:替换满足条件(值相等、满足谓词条件)的元素为给定元素、替换满足条件的元素并将其拷贝至别处。

    fill、fill_n:将给定序列元素填充为给定值、将给定的前n个元素填充为给定值。

    generate、generate_n :用自定义的生成器生成元素,并将这些元素赋值给给定序列或前n个序列。

    remove、remove_if:移除相等或满足谓词条件的元素。注意,若有元素被移除,指向这些元素之后的迭代器的可以使用,但结果是未指定的(unspecified)。

    unique、unique_copy:使序列唯一(即若有重复元素,保留第一个,其余全部移除)、是序列唯一并拷贝至目的地。

    reverse、reverse_copy:将给定序列逆转、将给定序列逆转并拷贝至目的地。

    rotate、rotate_copy:将给定序列左旋转(middle - first)个元素、将给定序列左旋转(middle - first)个元素并拷贝。

    shuffle:使用均匀随机数生成器将给定序列洗牌(即打乱,重新分布)。

    下面几个函数有关分区的同一方面,但又功能却不想上面所列那么相似,故而分开叙述:

    is_partition:用给定的一元谓词判断给定序列是否被正确分区(即前一部分元素调用谓词返回true,后一部分返回false)。

    partition:对给定序列进行分区操作。

    stable_partition:与partition操作相似,但是两个group(即分区成的两个分区)内元素的相关顺序保持不变(stable)。

    partition_copy:与partition相似,但是两个分区group结果被拷贝到两个指定的位置。

    partition_point:返回分区点,该点之前、该点之后(包括该点)分别为两个分区。

    Sorting and related operations

    这些函数都有两个版本:使用operator <的、使用函数子Compare的。

    sort:排序。

    stable_sort:稳定排序。

    partial_sort:部分排序,对于给定的序列,只排序前middle - first个元素,并将它们放置在[first,middle)范围中,剩余位置的元素顺序为指定。

    partial_sort_copy:paartial_sort函数的copy版本。

    is_sorted、is_sorted_util:判断给定序列是否为已排序(使用operator <或自定义函数子判断)的。

    nth_element:将nth迭代器指定的位置排序为结果元素。(实际上应该是使用快排实现的)

    lower_bound、upper_bound、equal_range:返回下界、上界、相等性范围。

    binary_search:在给定序列中对元素进行二分查找。

    merge、inplace_merge:合并两个序列并输出。

    includes:判断是否一个序列重的所有元素都被包含在另一个序列中。

    set_union:并集。

    set_intersection:交集。

    set_difference:差集。

    set_symmetric_difference:对称差集。

    push_heap:将一个元素push进由序列表示的heap中,并维持堆得性质。

    pop_heap:将一个元素从heap中pop(实际上被交换到尾部)。

    make_heap:将给定序列构造成heap。

    sort_heap:对给定堆进行排序(可能有特殊的算法对堆排序进行优化)。

    is_heap、is_heap_util:判断给定序列是否为堆、判断给定序列到哪个位置之前为堆。

    min、max:返回最小值、最大值。

    minmax:返回pair

    min_element、max_element:返回序列中第一个最小值、最大值。

    minmax_element:返回pair

    lexicographical_compare:对两个序列进行字典序排序。

    next_permutation、prev_permutation :判断给定序列是否存在下一个或者上一个组合(所有可能的排列组合先由字典序排序,再进行判断)。

    C library algorithms

    该头文件还包含了标准C头文件stdlib.h,大体相同。只是出于与C兼容的目的,bsearch和qsort同时包含了C和C++的两个函数签名。

    了解详情请登陆广州达内C++培训官网(gz.c.tedu.cn)!

    推荐文章

上一篇:【广州达内C++培训】auto_ptr

下一篇:线段树模板中的区间修改和区间查询

最新开班日期  |  更多

c++--零基础周末班

c++--零基础周末班

开班日期:2月28日

c++--零基础全日制班

c++--零基础全日制班

开班日期:2月28日

c++--免费训练营

c++--免费训练营

开班日期:2月28日

c++--高薪就业班

c++--高薪就业班

开班日期:2月28日

  • 网址:http://gz.c.tedu.cn     地址:广州市天河北五山路 141 号尚德大厦 627
  • 课程培训电话: 020-87532245 24小时热线:15622781509 咨询QQ:3061057839     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56