STL(二)---算法

it2022-07-03  126

STL(二)—算法

算法库定义了用来实现各种功能的函数(如查找、排序、计数、修改等),都是针对指定范围内元素的操作。需要注意的是,元素的范围以 [first, last) 的形式指定,其中 last 指的是范围内最后一个元素的下一个元素。在头文件 algorithm中定义。

非变动性算法

for_each() //对每个元素执行某个操作 count() //返回某元素的数量 count_if() //返回满足特定条件的元素的数量 min_element() //返回最小值 max_element() //返回最大值 minmax_element() //返回最大值和最小值 find() //搜寻等于某值的第一个元素 find_if() //查找满足特定条件的第一个元素 find_if() //查找不满足特定条件的第一个元素 search() //查找某区间第一次出现位置 search_n() //查找满足条件的第一段“n个连续元素” find_end() //查找一定范围内最后一次出现位置 find_first_of() //查找等于某个值的第一个元素 adjacent_find() //查找彼此相邻的两个相同(或其它的关系)的元素 equal() //确定两区间是否相同 is_permutation() //返回两个无序范围内是否包含相同元素 mismatch() //查找两个序列中,第一个不同元素的位置 lexicographical_compare() //返回字典序更小的范围 is_sorted() //返回范围内的元素是否排序 is_sorted_until() //返回范围内第一个无序元素 is_partitioned() //返回范围内的元素在某准则下是否被划分为两个部分 partition_point() //返回范围内区可进行边间划分的元素 is_heap() //返回范围内的元素是否是堆排序 is_heap_until() //返回范围内第一个非堆排序的元素 all_of() //范围内是否所有元素都满足某条件 any_of() //范围内是否存在某元素满足某条件 none_of() //范围内是否没有元素满足某条件

变动性算法

for_each() //对每个元素执行某个操作 copy() //从第一个元素开始,复制某个范围 copy_if() //根据某个准则复制元素 copy_n() //复制n个元素 copy_backward() //从最后一个元素开始,从后往前复制某个范围 move() //将某一范围的元素移动到一个新的位置 move_backward() //按从后往前的顺序移动某一范围的元素到新的位置 transform() //合并两个范围内的元素并进行修改 merge() //合并两个范围元素 swap_ranges() //交换两个范围的元素 fill() //将一个值赋给每个元素 fill_n() //将一个值赋给n个的元素 generate() //将函数的结果赋给每个元素 generate_n() //将函数的结果赋给n个元素 iota() //将升序序列的值赋给每个元素 replace() //用一个值替换另一个值 replace_if() //将所有满足特定条件的元素替换为另一个值 replace_copy() //复制一个范围内的元素,并用一个值替换为另一个值 replace_copy_if() //复制一个范围内的元素,并将满足特定条件的元素替换为另一个值

删除算法

remove() //删除拥有特定值的元素 remove_if() //删除满足特定条件的元素 remove_copy() //复制不匹配特定值的元素 remove_copy_if() //复制不满足特定条件的元素 unique() //删除区间内连续重复的元素 unique_copy() //删除区间内连续重复的元素并复制

变序算法

reverse() //逆序排列所有元素 reverse_copy() //复制所有元素并逆序 rotate() //旋转元素顺序 rotate_copy() //复制所有元素并旋转 next_permutation() //置换元素顺序 prev_permutation() //置换元素顺序 shuffle() //使元素变为随机顺序 random_shuffle() //使元素变为随机顺序 partition() //把一个区间的元素分为两组,前面的一组满足某个条件 stable_partition() //将元素分为两组,同时保留其相对顺序 partition_copy() //将区间内的元素分为两组复制到不同位置

排序算法

sort() //所有元素排序 stable_sort() //排序同时保留相对位置 partial_sort() //排序,直到前n个元素就位 partial_sort_copy() //排序,直到前n个元素就位,复制这个结果 nth_element() //根据第n个位置进行排序 partition() //改变元素次序,是符合某准则的元素放在前面 stable_partition() //partition()相同,但保持相对位置 partition_copy() //改变元素次序,是符合某准则的元素放在前面,并复制 make_heap() //将一个区间转换为一个heap push_heap() //将元素加入到一个heap pop_heap() //从heap中删除一个元素 sort_heap() //对heap进行排序

已序区间算法

binary_search() //判断区间内是否包含某个元素 includes() //判断区间内每个元素是否都涵盖于另一个区间中 lower_bound() //搜寻第一个“大于等于给定值”的元素 upper_bound() //搜寻第一个“大于给定值”的元素 equal_range() //返回“等于给定值”的元素区间 merge() //合并两个区间的元素 set_union() //求两个区间的并集 set_intersection() //求两个区间的交集 set_difference() //求位于第一个区间不位于第二个区间的所有元素,形成一个已序区间 set_symmetric_difference() //找出只出现于两区间之一的所有元素,形成一个已序区间 inplace_merge() //将两个连续的已序区间合并 partition_point() //返回区间划分边界元素

数值算法

accumulate() //组合所有元素(求和、求积等) inner_product() //组合两区间内所有元素 adjacent_difference() //将每个元素和其前一元素组合 partial_sum() //将每个元素和其先前的所以元素组合

最新回复(0)