STL-常用算法-程序员宅基地

常用遍历、查找、拷贝和替换、算数生成、集合算法。

遍历算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
遍历算法,遍历容器元素
@param beg 开始迭代器
@param end 结束迭代器
@param _callback 函数回调或者函数对象
@return 函数对象
*/
for_each(iterator beg, iterator end, _callback);

/*
transform 算法,将指定容器区间元素搬运到另一容器中
注意: transform 不会给目标容器分配内存,所以需要我们提前分配好内存
@param beg1 源容器开始迭代器
@param end1 源容器结束迭代器
@param beg2 目标容器开始迭代器
@param _cakkback 回调函数或者函数对象
@return 返回目标容器迭代器
*/
transform(iterator beg1, iterator end1, iterator beg2, _callbakc)

查找算法

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
54
/*
find 算法, 查找元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 查找的元素
@return 返回查找元素的位置
*/
find(iterator beg, iterator end, value)
  
/*
adjacent_find 算法,查找相邻重复元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param _callback 回调函数或者谓词(返回 bool 类型的函数对象)
@return 返回相邻元素的第一个位置的迭代器
*/
adjacent_find(iterator beg, iterator end, _callback);

/*
binary_search 算法二分查找法
注意: 在无序序列中不可用
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 查找的元素
@return bool 查找返回 true 否则 false
*/
bool binary_search(iterator beg, iterator end, value);

/*
find_if 算法 条件查找
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param callback 回调函数或者谓词(返回 bool 类型的函数对象)
@return bool 查找返回 true 否则 false
*/
find_if(iterator beg, iterator end, _callback);

/*
count 算法 统计元素出现次数
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 回调函数或者谓词(返回 bool 类型的函数对象)
@return int 返回元素个数
*/
count(iterator beg, iterator end, value);

/*
count 算法 统计元素出现次数
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param callback 回调函数或者谓词(返回 bool 类型的函数对象)
@return int 返回元素个数
*/
count_if(iterator beg, iterator end, _callback);

排序算法

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
/*
merge 算法 容器元素合并,并存储到另一容器中
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
*/
merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
  
/*
sort 算法 容器元素排序
注意:两个容器必须是有序的
@param beg 容器 1 开始迭代器
@param end 容器 1 结束迭代器
@param _callback 回调函数或者谓词(返回 bool 类型的函数对象)
*/
sort(iterator beg, iterator end, _callback)

/*
sort 算法 对指定范围内的元素随机调整次序
@param beg 容器开始迭代器
@param end 容器结束迭代器
*/
random_shuffle(iterator beg, iterator end)
  
/*
reverse 算法 反转指定范围的元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
*/
reverse(iterator beg, iterator end)

拷贝和替换算法

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
/*
copy 算法 将容器内指定范围的元素拷贝到另一容器中
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param dest 目标容器结束迭代器
*/
copy(iterator beg, iterator end, iterator dest)
  
/*
replace 算法 将容器内指定范围的旧元素修改为新元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param oldvalue 旧元素
@param oldvalue 新元素
*/
replace(iterator beg, iterator end, oldvalue, newvalue)
  
/*
replace_if 算法 将容器内指定范围满足条件的元素替换为新元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param callback 函数回调或者谓词(返回 Bool 类型的函数对象)
@param oldvalue 新元素
*/
replace_if(iterator beg, iterator end, _callback, newvalue)

/*
swap 算法 互换两个容器的元素
@param c1 容器 1
@param c2 容器 2
*/
swap(container c1, container c2)

算数生成算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
accumulate 算法 计算容器元素累计总和
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value 累加值
*/
accumulate(iterator beg, iterator end, value)

/*
fill 算法 向容器中添加元素
@param beg 容器开始迭代器
@param end 容器结束迭代器
@param value t 填充元素
*/
fill(iterator beg, iterator end, value)

集合算法

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
/*
set_interp 算法 求两个 set 集合的交集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_interp(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
  
/*
set_union 算法 求两个 set 集合的并集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*
set_difference 算法 求两个 set集合的差集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shuiCSDN/article/details/104001137

智能推荐

【C++ Primer Plus】学习笔记--第11章 使用类-程序员宅基地

第十一章目录11.1-11.2 运算符重载可重载的操作符重载限制11.3 友元为何需要友元?创建友元友元函数是否有悖于OOP ?重载<< 运算符11.4 重载运算符:成员函数?友元函数哪种格式最好呢?11.5 再谈重载:一个矢量类(技巧)11.6 类的自动转换和强制转换关键字explicit转换函数(类对象 -> 其他数据类型)11.1-11.2 运算符重载C++允许将运算符扩展到用户定义的类型。语法格式:// function prototypeTime operator+(

ICLR 2022 under review|化学反应感知的分子表征学习_分子结构化表征_DrugAI的博客-程序员宅基地

今天给大家介绍一篇关于分子表征学习的文章。分子表征学习(MRL)旨在将分子嵌入到实向量空间中。然而,现有的基于SMILES(简化分子线性输入系统)或GNN(图神经网络)的MRL方法要么以SMILES字符串作为输入,难以编码分子的结构信息,要么过度强调GNN结构的重要性,而忽视了其泛化能力。因此,作者提出使用化学反应来协助学习分子表征,其核心思想在于保持分子在嵌入空间中的化学反应的等价性,即强制让每个化学方程式的反应物嵌入和生成物嵌入的总和相等,该限制在保持嵌入空间的有序性和提高分子嵌入的泛化能力中被证明.._分子结构化表征

XSLT解析JSON字符串_xslt 属性是json字符串-程序员宅基地

这两天呗XSL类问题搞的焦头烂额,不过总是解决了问题。给定一个JSON串怎么进行对其解析呢?串如下:[{"TriggerVal":"10001510","TargetItemNo":"1879","targetCRFNo":null,"targetPageNo":null,"TargetItemDivId":null,"FromCRFNo":null},{"TriggerVal":"100_xslt 属性是json字符串

css实现右下角√对号选中样式——基础积累_css 右下角点击出现对号角标表示选中-程序员宅基地

css实现右下角√对号选中样式_css 右下角点击出现对号角标表示选中

云计算 - 虚拟化技术Overview-程序员宅基地

In computing,virtualization refers to the act of creating a virtual(rather than actual)versio...

自动驾驶 - 实现的功能与等级对应关系 - L0 ,L1,L2_自动驾驶等级与对应功能_六指琴魔迟来大师的博客-程序员宅基地

L0: 完全人工驾驶L1: 单维度控制,(单纵向,单横向)控制。车道保持辅助,定速巡航.L2:双维度同时控制,(纵向和横向)控制。全速自适应巡航+主动车道保持,自动泊车,自动变道。L3:有条件自动驾驶,紧急情况下,需要人工接手..._自动驾驶等级与对应功能

随便推点

python导入模块 pip 方法_python导入.wel-程序员宅基地

python安装pygame的whl文件方法一命令提示符输入:D:命令提示符输入:cd D:\Python34\Scripts\命令提示符输入:pip install D:\pygame-1.9.2a0-cp34-none-win_amd64.whl方法二设置变量:path加入变量值:;D:\Python34\Scripts;命令提示符输入:pip install D:\pygame-1.9.2a..._python导入.wel

python 下载百度音乐_python下载百度音乐并保存-程序员宅基地

最近在学习python,恰巧手上有某位大神无聊写的从百度上下载音乐的脚本,拿来学习学习。#!/usr/bin/python# -*- coding:utf-8 -*-from xml.etree import ElementTree as XmlTreeimport osimport sysimport urllibDOWNLOAD_URL = 'http://box.zh_python下载百度音乐并保存

预处理过程详解_捕获一只小肚皮的博客-程序员宅基地

前言上一篇文章说到,这将是博主更新的最后一篇关于C语言知识点的博客,也确实,因为这篇文章是讲解的 c的预处理,也是c语言最后的一部分知识了,还是老话,博主的所有文章几乎篇幅都比较长,大家可以根据目录进行选择性观看,同时,博主还是有些小心思,帮自己以前的文章点点浏览量,哈哈哈,放上以前的文章链接.c语言操作符基础指针一篇面试题的经历数据存储原理基础结构体指针进阶数组与指针关系指针与数组经典题字符串与内存函数自定义类型,结构体进阶动态内存详解^ 异或运算技

利用AI+大数据的方式分析恶意样本(三十)_deepreflect-程序员宅基地

一篇USENIX 2021关于利用AE和聚类两层次方法识别恶意函数的文章_deepreflect

ISO26262解析(七)——诊断覆盖率评估-程序员宅基地

ISO 26262-5 Annex DAn evaluation of the diagnostic coverage to produce a rationale for:1) the compliance with the single-point fault and latent-fault metrics defined in Clause 8;2) the complianc..._诊断覆盖率

android.database.sqlite.SQLiteException: table userinfo has no column named signature (code 1): , w-程序员宅基地

本人目前接触到的关于数据库的错误不多,一般就是重复添加 or 操作语句错误上面所述错误大概的意思就是添加数据时找不到该表的某一字段一般解决方法有这三种:1. 检查字段后面没有加“,”(逗号)分开2. 检查赋值取值时是否所有字段一致3. 检查赋值取值时所用字段是否和表字段一致