![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 59
C++中的STL
啊艺要努力
成为想要成为的人。
展开
-
STL库--算法
头文件。原创 2023-07-10 16:11:40 · 38 阅读 · 0 评论 -
STL库--内建函数对象
STL 内建了一些函数对象。分为:算数类函数对象关系运算类函数对象逻辑运算类仿函数。这些仿函数所产生的对象, 用法和一般函数完全相同。原创 2023-07-01 18:04:08 · 44 阅读 · 0 评论 -
STL库--适配器
他们的作用是在绑定函数对象时,暂时不指定参数的值,而是将参数的位置占位。bind1st、bind2nd函数是早期版本的C++标准库中的函数,它是bind函数的一种特殊形式。可以将一个带有多个参数的函数对象或函数指针转换为一个只接受部分参数的函数对象。适配器:将成员函数转换为一元函数对象,可以用于接受一个参数的算法。适配器:将成员函数转换为二元函数对象,可以用于接受两个参数的算法。,并返回一个新的谓词对象,该对象对原谓词的结果进行取反操作。,并返回一个新的谓词对象,该对象对原谓词的结果进行取反操作。原创 2023-07-01 17:53:14 · 66 阅读 · 0 评论 -
STL库--谓词
如果普通函数或仿函数,有一个参数就叫。如果普通函数或仿函数,有两个参数就叫。谓词通常用于算法中的判断条件,例如在排序算法中。,或者在查找算法中指定要查找的条件。原创 2023-07-01 17:01:17 · 51 阅读 · 0 评论 -
STL库--函数对象(仿函数)
1、 函数对象通常不定义构造函数和析构函数, 所以在构造和析构时不会发生任何问题, 避免了函数调用的运行时问题。2、 函数对象超出普通函数的概念, 函数对象可以有自己的状态3、 函数对象可内联编译, 性能好。用函数指针几乎不可能4、 模版函数对象使函数对象具有通用性, 这也是它的优势之一。原创 2023-07-01 16:43:05 · 43 阅读 · 0 评论 -
STL库--迭代器
每个迭代器对象代表容器中的确定的地址,所以可以认为迭代器其实就是用来指向容器中数据的。::const_reverse_iterator 迭代器名。,我们可以通过改变这个指针来遍历容器中的所有元素。::reverse_iterator 迭代器名。::const_iterator 迭代器名。::iterator 迭代器名。STL容器中的部分或全部元素。迭代器是一种对象,它。按照定义可以分为四种。原创 2023-03-23 17:49:19 · 77 阅读 · 0 评论 -
STL库--容器的使用场景
vector 的使用场景:比如软件历史操作记录的存储, 我们经常要查看历史记录,比如上一次的记录, 上上次的记录, 但却不会去删除记录, 因为记录是事实的描述。deque 的使用场景:比如排队购票系统, 对排队者的存储可以采用 deque,支持头端的快速移除, 尾端的快速添加。list 的使用场景:比如公交车乘客的存储, 随时可能有乘客下车, 支持频繁的不确实位置元素的移除插入。set 的使用场景:比如对手机游戏的个人得分记录的存储, 存储要求从高分到低分的顺序排列。原创 2023-03-16 16:40:18 · 155 阅读 · 0 评论 -
元组tuple
tuple模板是pair的泛化,可以封装不同类型任意数量的对象。uple可以声明二元组,也可以声明三元组。tuple_size<decltype(t)>::value:获取元素个数。原创 2023-03-23 17:48:41 · 56 阅读 · 0 评论 -
数组array
array1.empty():判断容器是否为空 at(n) 返回容器中 n 位置处元素的引用,函数会自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常。array1.size():返回容器中元素的数量,其值等于初始化 array 类的第二个模板参数N。array1.back():返回容器中最后一个元素的直接引用,函数不适用于空的 array 容器。array1.front():返回容器中第一个元素的直接引用,函数不适用于空的 array 容器。//声明一个大小为n的T型数组。原创 2023-03-23 17:47:22 · 79 阅读 · 0 评论 -
位组bitset
b.test(pos):测试b在pos位置是否为1,是则返回true。b.any():b中是否存在置为1的二进制位,有则返回true。b.none():b中是否没有1,没有则返回true。//a有n位,每位都为0。b.reset(pos):把b中pos位置置为0。b.set(pos):把b中pos位置置为1。b.flip(pos):把b中pos位置取反。b.reset():把b中所有位都置为0。b.size():b中二进制位的个数。b.set():把b中所有位都置为1。b.count():b中为1的个数。原创 2023-03-23 17:44:59 · 60 阅读 · 0 评论 -
对组pair
对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型, 两个值可以分别用 pair 的两个公有属性 first 和 second 访问。可以作为map键值对进行插入。原创 2023-03-23 17:47:40 · 81 阅读 · 0 评论 -
STL库--string容器
必须先声明:#include <string>2.读入一行字符串(包括空格),遇回车结束注意:getline(cin, s)会获取前一个输入的换行符,所以需要在前面添加读取换行符的语句。如:getchar() 或cin.get()正确读法:总结:要特别注意cin与cin.getline()的混用原创 2023-03-23 17:41:34 · 71 阅读 · 0 评论 -
STL库--优先队列priority_queue
/定义的比较结构体//注意:cmp是个结构体struct cmp{//自定义堆的排序规则//初始化定义,// x大的在堆顶。原创 2023-03-16 16:36:22 · 279 阅读 · 0 评论 -
STL库--队列queue
注意:和stack一样,queue也没有迭代器,不具备遍历功能,只能通过front、back访问。原创 2023-03-16 09:20:52 · 250 阅读 · 0 评论 -
STL库--栈stack
注意:stack没有随机迭代器(不能实现p+n=p[n])原创 2023-03-16 09:12:52 · 74 阅读 · 0 评论 -
STL库--map和mulimap
map是STL的一个关联容器,它提供一对一的hash1.所有元素都会根据元素的键值自动排序2.所有的元素都是pair,同时拥有键值和实值。第一个参数:键值。第二个参数:实值3.map容器的键值唯一不可变,实值可变multimap允许key相同。原创 2023-03-14 23:14:21 · 100 阅读 · 0 评论 -
STL库--set和multiset
set ,又称集合,实际上就是一组元素的集合,但其中所包含的元素的值是唯一的,且是按一定顺序排列的1.所有元素会根据键值自动排序2.set与map不同,map有键值又有实值。而set的键值也是实值3.set不允许键值相同4.set提供的是只读迭代器不允许修改元素的内容)插入的时候就排好序了,要是修改了,顺序就会发生错误。允许删除,因为删除不会破坏顺序因为其内部是通过链表的方式来组织,所以在插入的时候比vector 快,但在查找和末尾添加上比vector 慢。原创 2023-03-14 23:03:53 · 77 阅读 · 0 评论 -
顺序性容器的区别
优点:每次存放新节点的时候都重新new空间。缺点:其他位置的插入/删除操作效率低下。缺点:迭代器复杂度高,排序效率低下。缺点:不能进行随机访问。原创 2023-03-22 13:55:32 · 33 阅读 · 0 评论 -
STL库--list链表
/list 采用采用模板类实现,对象的默认构造形式://构造函数将[beg, end)区间中的元素拷贝给本身。//构造函数将 n 个 elem 拷贝给本身。//拷贝构造函数。原创 2023-03-14 22:31:50 · 82 阅读 · 0 评论 -
STL库--deque双端动态数组
deque兼顾了数组和链表的优点:即是连续存储结构,又支持在两端添加/删除元素问题:对deque进行排序操作复杂度高。原创 2023-03-14 22:23:47 · 148 阅读 · 0 评论 -
STL库--vector单端动态数组
是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector看作动态数组。问题:vector 的插入操作可能造成记忆体重新配置,导致原有的迭代器全部失效原本:vector::iterator it=v.end();但有东西插入后,it指向的空间不再是尾部。原创 2023-03-14 22:01:40 · 181 阅读 · 0 评论 -
STL库--容器
顺序性容器关联式容器容器适配器顺序性容器:可变长动态数组Vector,双端队列deque,双向链表list特点:顺序存储关联性容器:set,multiset,map,multimap特点:链式存储关联容器是使用红黑树实现的,它的元素是排序的,所以查找时具有非常好的性能。容器适配器:栈stack、队列queue、优先队列priority_queue适配器是容器的接口,它本身不能直接保存元素,它保存元素的机制是调用另一种顺序容器去实现,即可以把适配器看作。原创 2023-03-14 21:35:31 · 79 阅读 · 0 评论 -
STL库--概述
C++标准模板库(Standard Template Library,STL)是泛型程序设计最成功的实例。STL是一些常用数据结构和算法的模板的集合。原创 2023-03-14 21:23:57 · 382 阅读 · 0 评论