c语言compare头文件,简单谈谈C++头文件系列之(algorithm)

c语⾔compare头⽂件,简单谈谈C++头⽂件系列之
(algorithm)
简介
algorithm头⽂件是C++的标准算法库,它主要应⽤在容器上。 因为所有的算法都是通过迭代器进⾏操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性。 因此,任何数据结构都能使⽤这套算法库,只要它具有相应的迭代器类型。
算法类别
如上图所⽰,库中的算法主要分为4类:
⾮修改性顺序操作(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个元素)。
方正君逸m530count、count_if : 对制定序列中的满⾜条件(值相等、满⾜条件)的元素进⾏计数。
mismatch : 给定两个元素序列,返回第⼀个不匹配(值不相等、不满⾜条件)的元素位置,以⼀个迭代器对指出。
equal : 判断两个序列是否相等(值相等、满⾜谓词条件)。
is_permutation : 判断是否⼀个序列是另⼀个序列的排列,即只有排列⽅式不相等(值不相等、不满⾜谓词条件)。
search、search_n : 在给定序列中查⼦序列或者n个重复的元素序列。
Mutating sequence operations
copy、copy_n、copy_if、copy_backward : 拷贝序列、拷贝序列中前n个元素、拷贝序列中满⾜条件的、从后往前拷贝序列。
move、move_backward : 移动序列、从后往前移动序列(移动后,任然可以对源序列进⾏操作,但元素值是未指定的)。
河南妇女毛深深的沟WCDswap、iter_swap : 逐元素交换序列、交换两个序列。直通春晚第三场>net-link
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++的两个函数签名。

本文发布于:2024-09-21 04:30:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/649260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:序列   元素   给定   谓词
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议