STL
快速掌握STL入门基础知识并可以简单的使用
一杆梅子酒丶
这个作者很懒,什么都没留下…
展开
-
STL容器:map、multimap的简介与使用
map的介绍map是关联式容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。在map中,键值key通常用于排序和惟一的标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair:typedef pair value_type;在内部,map中的元素总是按照键值key进行比较排序的。map中通过键值访问单个元素的速度通常比原创 2020-08-15 00:10:11 · 436 阅读 · 0 评论 -
STL容器:set、multiset的简介与使用
set的介绍set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代set在底层是用平衡搜索树(红黑树)实现的使用set时必须加原创 2020-08-12 10:08:13 · 462 阅读 · 0 评论 -
STL容器适配器:priority_queue的简介与使用
priority_queue的介绍优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,priority_queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。容器应该可以通过随机访问迭代器原创 2020-07-06 11:01:36 · 318 阅读 · 0 评论 -
STL容器适配器:queue的简介与使用
queue的介绍队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用pus原创 2020-07-05 23:42:29 · 275 阅读 · 0 评论 -
STL容器适配器:stack的简介与使用
stack的介绍stack是一种容器适配器,专门用在具有先进后出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入原创 2020-07-05 00:49:43 · 377 阅读 · 1 评论 -
vector、list、deque的优缺点区别
vector优点:支持下标的随机访问,间接的就很好的支持了排序、查找、堆等等算法缺点:头部和中间的插入删除效率低。时间复杂度 O(N),因为需要搬移数据实现插入数据空间不够需要增容,增容需要开辟新空间、拷贝数据、释放旧空间,付出的代价很大详细介绍:STL容器:vector的简介与使用list优点:头插、中间插入不需要搬移数据,效率高,时间复杂度O(1)插入数据是新增节点,不需要扩容缺点:不支持随机访问详细介绍:STL容器:list的简介与使用vector与list原创 2020-07-04 15:00:56 · 3267 阅读 · 0 评论 -
STL容器:deque的简介与使用
deque的原理介绍deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底层结构如下图所示:双端队列底层是一段假象的连续空间,实际是分段连续的,为了维护其“整体连续”以及随机访问的假象,落在了deque的迭代器身上,因此deq原创 2020-07-04 14:30:15 · 564 阅读 · 0 评论 -
STL容器:list的简介与使用
list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,让其更简单高效。与其他的序列式容器相比(vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比,list和forw原创 2020-07-04 00:23:46 · 1218 阅读 · 0 评论 -
STL容器:vector的简介与使用
vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务。每当一个新的元素加入到容器的时候,ve原创 2020-07-03 15:40:12 · 202 阅读 · 0 评论 -
STL容器:string类的简介与使用
传统的C没有专门的字符串类型,需要使用常量字符串或者字符数组来使用在实际运用中,一般使用字符串函数来处理string类基本操作string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作string在底层实际是:basic_string模板类的别名typedef basic_string<char, char_traits, allocator> string;不能操作多字节或者变长字符的序列在使用string类时,原创 2020-07-03 01:12:21 · 150 阅读 · 0 评论 -
STL知识体系框架图
转载 2020-07-02 12:25:56 · 139 阅读 · 0 评论 -
美妙的STL
STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,是C++标准库的重要组成部分,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。STL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 程序库的重要组成部分。值得一提的是,如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。STL 就位于各个 C++ 的头文件中原创 2020-07-02 12:23:20 · 2532 阅读 · 0 评论