STL中的算法库总结

1. 不修改序列的操作

all_of: 判断是否所有元素都满足某条件
any_of: 判断是否存在一个以上元素满足某条件
none_of: 判断是否任何一个元素都不满足某条件

for_each: 对于每一个元素, 执行某函数

count: 判断等于某个值的元素数量
count_if: 计算满足某条件的元素数量

mismatch: 找到两个序列中第一个值不同的位置

equal: 判断两个序列是否相等(第二个允许一部分来比较)

找到第一个满足条件的元素
find:  找到等于某个值的
find_if: 找到满足某条件的
find_if_not: 找到不满足某条件的
find_end: 找到最后一个子串
find_first_of: 找到第一个子串
adjacent_find: 找到第一个等值元素组成的子串
search: 找到一个子串第一次出现的地方
search_n: 查找长度为n的等值串的数量

2. 修改序列的操作

copy: 拷贝序列
copy_if: 拷贝符合某条件的
copy_n: 拷贝n个元素
copy_backward: 拷贝一个列表到某个位置, 不是往后, 是往前;
move: 将一个序列里的元素移动到其他位置, 移动后原序列是有效值, 但可能变了
move_backward: 移动元素, 从后往前
fill: 都设置为某个值
fill_n: 将前n个元素设置为某个值
transform:  将一个range里的元素, 用某个函数进行修改后, 放到另一个位置去
generate: 将一个序列里的元素, 用生成器赋值;
generate_n: 用函数生成前n个
remove: 把要删除的等于某个值的元素, 集合成一个range, 放到序列的尾部
remove_if: 删除符合某个条件的, 也只是移动, 不真正删除;
remove_copy: 将除了要删除的等于某个值的元素之外, 复制到另一个位置;
remove_copy_if: 将除了要删除的符合某个条件的元素之外, 复制到另一个位置;
replace: 将等于某个值的所有元素都替换为另一个元素;
replace_if: 将符合某个条件的所有元素都替换为另一个元素;
replace_copy: 拷贝和 替换一起做, 替换的是等于某个值的
replace_copy_if: 拷贝和替换一起做, 替换的是符合某个条件的
swap: 交换两个对象的值
swap_ranges: 交换两个range
iter_swap: 交换两个迭代器指向的元素的值
swap_ranges: 交换两个ranges里面的元素
reverse: 对range里面的元素反序
reverse_copy: 先拷贝再反序
rotate: 把range里面的两段对换
rotate_copy: 先拷贝再对换
shuffle: 打乱元素位置
random_shuffle: 随机打乱位置
unique: 将不唯一的元素唯一化, 删除多余的重复元素
unique_copy:  先拷贝再唯一化

3. 划分操作

is_partitioned: 是否已经按照某规则进行和划分
partition: 按照某种规则, 将序列分成两部分(比如前半部分偶数, 后半部分奇数)
partition_copy: 拷贝并划分
stable_partition: 划分, 并且保持原来元素的相对位置(是稳定的)
partition_point: 找到划分点

4. 排序操作

is_sorted: 序列是否增序排序
is_sorted_until: 找到未排序的第一个元素(123452中的2)
sort: 对一个range进行排序
partial_sort: 对前n个元素排序
partial_sort_copy: 拷贝前n个元素并进行排序
stable_sort: 稳定排序
nth_element:  把第n个位置上的元素, 设置为排序后应该是的元素(比如找到排序后第5个元素)

5. 二分法搜索操作(Binary Search)

都是在排好顺序的列表上操作
lower_bound: 找出第一个不小于给定元素的元素
upper_bound: 找出第一个不大于给定元素的元素
binary_search: 判断一个元素是否在该序列中
equal_range: 找出等于某元素的子range

6. 集合操作(对于有序)

merge: 合并
inplace_merge: 就地合并
 includes: 判断一个range是否包含另一个range
set_difference: 计算两个集合中不同的部分中的第一个集合里的元素(a-b)
set_symmetric_difference: 找出集合的异
set_union: 找出集合的合集

7. 堆操作

is_heap: 给定的range是否大头堆
is_heap_until: 找到range里面满足大头堆的最大的子range
make_heap: 生成一个大头堆, 线性复杂度
push_heap: 将一个数压入栈中, 对数复杂度
pop_heap:  出栈, 对数复杂度
sort_heap: 将一个堆转换为升序列表, n*log(n)复杂度

8. 最小值/最大值操作

max: 找出最大元素, 根据输入参数不同, 通常是常量复杂度, 但是对于列表是线性
max_element: 在range里找出最大的元素, 线性复杂度
min: 返回两个元素中较小的, 或者列表中最小的;
min_element: 找出range里面最小的元素;
lexicographical_compare: 按照字典序比较两个range的大小;
is_permutation: 判断一个range里面是否有子range和另一个range在组合上是等价的
next_permutation: 生成另一个字典序比现在大的排序
prev_permutation: 生成另一个字典序比现在小的排序

9. 数字操作

itoa: 为一个range生成递增的值
accumulate: 累计一个range里面的值
inner_product: 计算两个range的内积(类似矩阵相乘)
adjacent_difference: 生成毗邻相加的序列(1,1,2,3,5,...)
partial_sum: 生成递增序列(2,4,6,8,...)

10. C库

qsort: 对数组中的元素进行排序
bsearch: 二分搜索法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,715评论 0 19
  • 作者:大海里的太阳原文地址:http://www.cnblogs.com/wxisme/ 前言 查找和排序算法是算...
    IT程序狮阅读 2,476评论 0 63
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,712评论 0 33
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,149评论 0 52
  • 星期三/晴 意见交锋很好,却满含对社会的不信任是怎么回事? 今天又谈到职业的选择问题,对于我来说,记者此类的媒体人...
    酒久里个丸子阅读 143评论 0 0