STL的一些常见容器与算法
最近学习了黑马程序员的的STL课程,感觉讲的比较基础,适合入门,现总结一下
一、七个常见的容器
1、vector
2、string
3、deque
4、stack
5、List
6、set / multiset
7、map / multimap
其中map与set容器不允许有重复数据
二、基本操作
这几大容器用到的操作基本上差不多,如
1、push_back(),尾插 ; push_front(),头插
2、pop_back,尾删 ; pop_front(),尾插
3、insert(),插入
4、erase(),删除
5、clear(),清空
6、capacity(),获取容器容量
7、size(),获取容器大小
8、swap()交换两容器
9、[],利用[]进行数据存储,只限于随机访存容器 ; at(),利用at()进行数据存取,只限于随机访存类型的容器
10、find(),查找并返回迭代器
11、reverse(),容器逆置
12、begin(),第一个成员的迭代器;end(),最后一个成员的迭代器
13、assign(),容器赋值的常用操作
14、empty(),判断容器是否为空
15、resize(),重新指定容器大小
16、count(),统计value出现的次数
三、根据map,我们又学了 pair<,>对组
我们在使用map容器的Insert操作时,会返回pair<iterator,bool>对组,根据第二个参数我们可以判断是否存在重复数据,如果存在,则插入失败.
四、set与map容器创建的时候默认顺序是升序,我我们可以在添加数据前改变他们的排序顺序
利用仿函数,如:
五、谓词
1、一元谓词 operator 接受一个参数,就叫做一元谓词
2、二元谓词 operator 接受二个参数,就叫做二元谓词
六、内建函数对象
使用STL自己内部的访函数
有以下等:
1、equal_to //等于
2、not_equal_to //不等于/
3、greater //大于//
4、greater_equal//大于等于
5、less/ /小于
6、less_equal //小于等于//
//逻辑仿函数//
1、logical_and //逻辑与
2、logical_or //逻辑或
3、logical_not //逻辑非
#include <functional> //内建函数的使用需要加这个头文件//
七、STL常用算法
1、for_each //用于容器的遍历
2、transform //用于容器的搬运
3、find //用于查找指定元素并返回迭代器
4、find_if //按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置,比find更灵活
5、adjacent_find // 查找相邻重复的元素
6、binary_search //二分查找指定元素,因此需要容器里的元素有序
7、count //统计元素出现的次数
8、count_if
9、sort //排序,可以使用仿函数或回调函数更改其排序顺序
10、random_shuffle //洗牌,打乱顺序,顺序依赖于随即数种子
11、merge //合并两个容器的函数,将两个有序的容器合并成一个有序的容器
12、reverse //反转容器内的元素
13、copy //将容器内指定范围的元素拷贝到另一容器中
14、replace //将容器内指定范围的 元素替换为新元素
15、replace_if
16、swap //交换容器的元素
17、accumulate //小型算法 计算区间内元素的累计和// 需要包含#include <numeric>头文件//
18、fill //填充指定区间的元素 //需要包含#include <numeric>头文件//
19、set_intersection //求两个容器的交集//要求这两个容器是有序的//
20、set_union //求两容器的并集//要求两容器有序//
21、set_difference() //求俩容器的差集//要求有序//
#include <algorithm> //不要忘记加这个头文件//
八、课程中还提到了匿名变量,匿名函数,swap收缩内存等等,我会在其他文章中进行讨论
__EOF__

本文链接:https://www.cnblogs.com/lordtianqiyi/articles/15790289.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现