STL
文章平均质量分 92
菜牙@c++
人生苦短,我用python和c++
展开
-
STL适配器——函数适配器
STL适配器——函数适配器1、概念有时候需要对内建函数对象返回值进行进一步的简单计算,或者填上多余的参数,不能直接代入算法。函数适配器实现了这一功能,函数适配器是将一种函数对象转化为另一种符合要求的函数对象。函数适配器可以分为4个大类:绑定适配器、组合适配器、指针函数适配器和成员函数适配器。2、常用函数适配器绑定器(binder):binder通过把二元函数对象的一个实参绑定到一个特殊的值上,将其转化为一元函数对象。C++标准库提供两种预定义的binder适配器:bind1st和bind2n原创 2020-07-06 00:39:56 · 419 阅读 · 0 评论 -
STL函数对象——内建函数对象
STL——内建函数对象1、内建函数概念STL内建了一些函数。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同 ,还可以产生无名的临时对象来履行函数功能。使用内建函数对象,需要引入头文件<functional>。1、算数类函数对象除了negate是一元运算,其他都是二元运算。template<class T> T plus<T>//加法仿函数template<class T> T minus原创 2020-07-05 23:35:06 · 240 阅读 · 0 评论 -
STL函数对象——谓词
谓词概念:谓词是指普通函数或重载的operator()返回值是bool类型的函数对象。如果operator接受一个参数,称为一元谓词,如果接受两个参数,称为二元谓词。谓词可作为一个判断式。回调函数是指只有当某个函数(更确切的说是函数的指针)被作为参数, 被另一个函数调用时, 它才是回调函数。示例://一元谓词class GreaterThenFive{public: bool operator()(int num) { return num > 5;原创 2020-07-05 22:42:06 · 299 阅读 · 0 评论 -
STL函数对象——函数对象
函数对象概念:重载函数调用操作符()的类,其对象常称为函数对象,即它们是行为类似函数的对象,也叫仿函数,其实就是重载"()"操作符,使得类对象可以像函数那样调用。一个类对象,具有了某种函数的功能,就是通过“对象名+(参数列表)”的方式使用一个类对象。注意:1、函数对象是一个类,不是一个函数;2、函数对象重载了"()"操作符,使得类对象可以像函数一样调用。分类:1、假设某个类有一个重载的operator(),而且重载的operator()要求获取一个参数,就将这个类称为“一元函数对象”;2、如原创 2020-07-05 22:09:00 · 257 阅读 · 0 评论 -
STL算法——常用算法
STL常用算法1、算法概述算法部分主要由头文件<algorithm>和<functional>组成。<algorithm>是所有STL头文件中最大的一个,其中常见的功能涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等。<numeric>体积很小,只包括几个在序列上进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。<functioal>中则定义了一些模板类,用以声明函数对象。2、常用遍历算法for_e原创 2020-07-03 22:57:21 · 356 阅读 · 0 评论 -
STL容器——使用时机
STL容器使用时机vector使用场景:历史操作记录的存储。deque使用场景:排队存储。vector和deque比较1、vector.at()比deque.at()效率高,比如vector.at(0)是固定的,deque的开始位置是不固定的。2、如果有大量释放操作的话,vector花的时间更少3、deque支持头部快速的插入和快速移除,这是deque的优点。list使用场景:频繁的不确定位置移除操作set使用场景:得分记录的存储,存储要求从高分到低分的顺序排列存储,存储原创 2020-06-30 21:42:21 · 231 阅读 · 0 评论 -
STL容器——map/multimap
STL容器——map/multimap1、map/multimap概念map的所有元素都会根据元素的键值自动排序。map所有的元素都是pair,同时拥有键和值,pair的第一元素被视为键值,第二元素被视为值,map不允许两个元素有相同的键。不可以通过map 的迭代器改变map的键值,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。可以修改map的值map和list拥有相同的某些性质,当对它的容器元素进行新增或者删除操作时,操作之前的所有迭代器在操作结束依然有效原创 2020-06-30 21:21:02 · 273 阅读 · 0 评论 -
STL容器——set/multiset
STL容器——set/multiset1、set概念set的特点是所有元素都会根据元素的键值自动被排序。set的元素不像map那样可以同时拥有值和键,set的元素本身既是键又是值。set不允许两个元素有相同的键值。不可以通过set的迭代器不能改变set元素的值。因为set元素元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织。set拥有和list某些相同的性质,当对容器中的元素进行插入操作或者删除操作的时候,操作之前所有的迭代器,在操作结束后依然有效。原创 2020-06-29 23:47:03 · 212 阅读 · 0 评论 -
STL容器——list
STL容器——list1、list概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列(链表中每一个元素称为结点)组成,结点可以运行时动态生成。每个结点包括两部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。对比vector的连续线性空间,list的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用是精准的。而且,对于任何位置的元素插入或者移除,list消耗时间是一致原创 2020-06-28 21:39:26 · 433 阅读 · 0 评论 -
STL容器——queue
STL容器——queue1、queue概念queue是一种先进先出的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。queue所有元素必须符合“先进先出”的条件,只有queue顶端元素才可以被取用,因此queue不能进行遍历,也没有迭代器。2、queue构造函数queue<T’> queT;//queue采用模板类实现queue(const queue &queue);//拷贝构造函数queue<int> queInt原创 2020-06-28 20:09:18 · 346 阅读 · 0 评论 -
STL容器——stack
STL容器——stack1、stack概念stack是一种先进后出的数据结构,它只有一个出口。stack容器允许新增元素,移除元素,取得栈顶元素,且只能取最顶端元素。也即,stack不需要有遍历行为。元素压入栈的操作叫push,元素推出stack的操作叫pop。因为stack不可以遍历,只有顶端元素才可以被获取,因此,stack也不存在迭代器。2、stack构造函数stack<T’> stkT;//stack采用模板类实现stack(const stack &s原创 2020-06-28 19:45:42 · 232 阅读 · 0 评论 -
STL容器——deque
容器——deque1、deque简介deque是双向开口的连续线性空间,vector是单向开口的连续内存空间。deque头部和尾部增加和删除元素很快,和vector一样在中部插入或者删除元素比较耗时。deque没有容量的概念,它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,因此,deque没有所谓的空间保留(reserve)功能。deque容器尽管也提供了迭代器,但是它的迭代器并不是普通的指针,其复杂度和vector不是一个量级。因此除非必要,我们应该尽可能使用vector原创 2020-06-26 23:12:58 · 209 阅读 · 0 评论 -
STL容器——vector
容器–vector1、vector简介vector是将元素置于一个动态数组中加以管理的容器vector可以随机存储元素(支持索引值直接存取,用[]操作符或at()方法)vector尾部增加或删除元素非常快速。但是在中部或者头部插入元素比较耗时。vector与array的关系array是静态空间,一旦配置了就不能改变大小了;vector是动态空间,随着元素的加入,内部会自动扩充空间以容纳新元素。为了降低空间配置时的速度成本,vector时机配置大小可能比需求大一些,以备将来肯的扩充。注意:原创 2020-06-25 23:46:30 · 219 阅读 · 0 评论 -
STL容器——string
容器——string1、string概念STL的string是一个char*型的容器。二者的关系:string是一个类,char是一个指向字符串的指针。string封装了char * ,管理这个字符串,是一个char* 型的容器;string管理char* 所分配的内存,每一次string的赋值,取值都由string类负责维护,不用担心复制越界和取值越界等。2、string构造函数string();//默认构造函数, string s1;//创建一个空字符串s1 。string(con原创 2020-06-25 18:42:51 · 325 阅读 · 0 评论 -
C++ STL简述
C++ STL概述1、STL概念STL(Standard Template Library, 标准模板库)是惠普实验室开发的一系列软件的统称。现在主要出现在C++中。STL分为:algorithm(算法)、container(容器)、iterator(迭代器)、仿函数(Function object)、适配器(Adaptor)、空间配置器(allocator)。容器和算法可以通过迭代器连接。使用STL的好处:STL是C++一部分,内嵌与编译器,不需要额外安装STL基本欧式模板类和模板函数,具有原创 2020-06-25 14:47:06 · 338 阅读 · 0 评论