STL学习笔记15— —算法

简介

算法库定义了用来实现各种功能的函数(如查找、排序、计数、修改等),都是针对指定范围内元素的操作。需要注意的是,元素的范围以 [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() //范围内是否没有元素满足某条件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

变动性算法

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()  //复制一个范围内的元素,并将满足特定条件的元素替换为另一个值 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

删除算法

remove() //删除拥有特定值的元素

remove_if() //删除满足特定条件的元素 

remove_copy() //复制不匹配特定值的元素

remove_copy_if() //复制不满足特定条件的元素 

unique() //删除区间内连续重复的元素 

unique_copy() //删除区间内连续重复的元素并复制 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

变序算法

reverse() //逆序排列所有元素

reverse_copy() //复制所有元素并逆序

rotate() //旋转元素顺序

rotate_copy() //复制所有元素并旋转

next_permutation() //置换元素顺序

prev_permutation() //置换元素顺序

shuffle() //使元素变为随机顺序

random_shuffle() //使元素变为随机顺序

partition() //把一个区间的元素分为两组,前面的一组满足某个条件 

stable_partition() //将元素分为两组,同时保留其相对顺序 

partition_copy() //将区间内的元素分为两组复制到不同位置 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

排序算法

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进行排序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

已序区间算法

binary_search() //判断区间内是否包含某个元素

includes() //判断区间内每个元素是否都涵盖于另一个区间中

lower_bound() //搜寻第一个“大于等于给定值”的元素

upper_bound() //搜寻第一个“大于给定值”的元素

equal_range() //返回“等于给定值”的元素区间

merge() //合并两个区间的元素

set_union() //求两个区间的并集

set_intersection() //求两个区间的交集

set_difference() //求位于第一个区间不位于第二个区间的所有元素,形成一个已序区间

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

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

partition_point() //返回区间划分边界元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

数值算法

accumulate() //组合所有元素(求和、求积等)

inner_product() //组合两区间内所有元素

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

partial_sum() //将每个元素和其先前的所以元素组合
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

简介

算法库定义了用来实现各种功能的函数(如查找、排序、计数、修改等),都是针对指定范围内元素的操作。需要注意的是,元素的范围以 [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() //范围内是否没有元素满足某条件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

变动性算法

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()  //复制一个范围内的元素,并将满足特定条件的元素替换为另一个值 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

删除算法

remove() //删除拥有特定值的元素

remove_if() //删除满足特定条件的元素 

remove_copy() //复制不匹配特定值的元素

remove_copy_if() //复制不满足特定条件的元素 

unique() //删除区间内连续重复的元素 

unique_copy() //删除区间内连续重复的元素并复制 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

变序算法

reverse() //逆序排列所有元素

reverse_copy() //复制所有元素并逆序

rotate() //旋转元素顺序

rotate_copy() //复制所有元素并旋转

next_permutation() //置换元素顺序

prev_permutation() //置换元素顺序

shuffle() //使元素变为随机顺序

random_shuffle() //使元素变为随机顺序

partition() //把一个区间的元素分为两组,前面的一组满足某个条件 

stable_partition() //将元素分为两组,同时保留其相对顺序 

partition_copy() //将区间内的元素分为两组复制到不同位置 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

排序算法

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进行排序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

已序区间算法

binary_search() //判断区间内是否包含某个元素

includes() //判断区间内每个元素是否都涵盖于另一个区间中

lower_bound() //搜寻第一个“大于等于给定值”的元素

upper_bound() //搜寻第一个“大于给定值”的元素

equal_range() //返回“等于给定值”的元素区间

merge() //合并两个区间的元素

set_union() //求两个区间的并集

set_intersection() //求两个区间的交集

set_difference() //求位于第一个区间不位于第二个区间的所有元素,形成一个已序区间

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

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

partition_point() //返回区间划分边界元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

数值算法

accumulate() //组合所有元素(求和、求积等)

inner_product() //组合两区间内所有元素

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

partial_sum() //将每个元素和其先前的所以元素组合
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

猜你喜欢

转载自blog.csdn.net/u013776188/article/details/75273026