c语言有algorithm头文件吗,简单谈谈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个元素)。
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语言有algorithm头文件吗,简单谈谈C++ 头文件系列之(algorithm)相关推荐
- 简单谈谈linux的文件权限问题
目录 首先学习几个改变文件权限的命令: 文件权限 目录权限 修改权限 写在最后 首先学习几个改变文件权限的命令: 改变文件权限: chmod [-R] [权限]文件或目录 文件权限 用cxf用户创建一 ...
- c语言 compare 头文件,简单谈谈C++ 头文件系列之(algorithm)
简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何 ...
- 【AWSL】之Linux文件系统与日志分析(inode、恢复EXT类型的文件、恢复XFS类型的文件)
序言 这里我主要介绍Linux文件系统与日志分析 文件系统与日志分析 序言 一.inode与block 1. 概述 ①inode的内容 ②inode号码 ③文件存储 ④inode的大小 ⑤inode的 ...
- c语言gets函数头文件string.h,string函数头文件
string.h头文件中有什么函数 string.h头文件中的函数: #include //STL 通用算法 #include //STL 位集容器 #include //复数类 #include / ...
- 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)
使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件) 使用beep播放mp3文件(10num) 使用go语言GUI库fyne实现音乐播放器 要是想使用go语言实现播放mp3需要借助be ...
- C语言字符串倒排,C语言兑现简单的倒排文件索引
C语言实现简单的倒排文件索引 inver.h文件 #ifndef INVERT_FILE_H #define INVERT_FILE_H #include #include typedef struc ...
- 如何用C语言对文件进行简单加密
最近在完成大作业的时候需要实现一个用C语言对文件进行简单加密的操作,这里主要用的加密思路是破坏文件头,使得系统无法识别文件从而进行加密,最初的思路是将用户输入的加密口令转成ASCII码,再与文件头数据 ...
- c语言exit头文件,exit函数在那个头文件
c语言 exit的头文件是什么? C语言exit函数的头文件是stdlib.h. exit的声明为 void exit(int value); exit的作用是,退出程序,并将参数value的值返回给 ...
- c语言合并jpg成pdf,JPG在线转换成PDF文件的简单方法
在现在的工作性质中.大家不管是在工作中还是在学习中,都会用到JPG图片文件,就连我们平时朋友聊天之间,也会传送很多图片文件,但是图片文件在聊天中很方便,但是在工作中传送图片就显得很不正式了,领导都会要 ...
最新文章
- 用户一亿的网易新闻客户端质量如何?
- 获取鼠标在盒子中的坐标
- java sftp nologin_SFTP连接通过Java询问奇怪的身份验证
- Linux系统目录结构说明
- 另一个.NET上的文档数据库Raven[转载]
- webclient对reactor-netty的封装
- C++笔记---函数声明(prototype)
- 如何在 Mac 上使用“备忘录”管理扫描文稿?
- 让chrome浏览器支持ajax跨域
- 书评:《深入浅出数据分析》
- Lighthouse
- c#开发环境下用Directx载入3D模型
- 三菱Q系列PLC项目资料 本系统采用三菱Q系列PLC,本系统中用到16个伺服电机,采用16轴控制器通过光纤驱动16个伺服
- MTK芯片资料下载,MT6580处理器参数介绍
- PCB板的绘制原来是这样完成的——布线
- Win10自定义安装Office2019
- 身为一个SEO/SEM/运营专员,一天的工作是怎样的?
- 腾讯云你的凭证不工作
- WPF企业内训全程实录(上)
- 导出 excel 表格(纯前端)和下载excel 文件