C++ STL教程
文章平均质量分 83
C++ STL全网最全教程
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
奇妙之二进制
csdn博客专家,C/C++领域优质创作者,抖音搜奇妙之二进制,专注于Linux C/C++、嵌入式Linux开发,偶尔谈谈人生,目前致力于完成大约500篇的linux C/C++开发知识体系库,所有的文章都会一直保持更新(优化内容、排版),想学习的可以订阅我的专栏,也可以关注Linux 世界。
展开
-
《C++ STL教程》(25) 关联式容器面试问题汇总
理解每种关联式容器的特性,以及与序列式容器的区别,每种关联式容器间的区别,这些是面试官关心的问题,不用去死记接口,面试一般不会让你背接口。原创 2020-08-29 22:14:54 · 834 阅读 · 2 评论 -
C++ STL教程(24)std::string用法大全
使用正则表达式匹配结果\n然后将匹配的字符串替换为"" (空字符串)。原创 2022-12-08 22:52:48 · 1267 阅读 · 0 评论 -
C++STL教程(23) 研究std::vector的内存增长规律
一、前言首先说明,vector可以理解为动态数组,既然是数组,那么它在内存中就应该是一块连续的内存,但vector是如何支持动态增长的呢?关于这个问题,网上有很对说法,但其中有些说法是错误的,最近看到有一篇博友的解释就非常正确vector空间动态增长,这里就针对的他的解释进行进一步的阐述,并进行实际验证。二、vector内存增长方式C++primer中多次明确指出对vector使用的建议是:先创建一个空的vector对象,然后再运行时再利用vector的成员函数push_back向其中添加元素。先以此转载 2021-11-21 16:09:11 · 5728 阅读 · 0 评论 -
C++ STL教程(21)仿函数
STL仿函数(Function Object,函数对象)在C++中是一种特殊的对象,它像函数一样接受参数并返回结果,可以用于算法和容器等STL组件中。STL仿函数可用于任何需要函数对象作为参数的地方。需要特别注意的是,在使用仿函数时,需要根据函数参数类型和返回值类型来选择相应的仿函数。另外,也可以自定义仿函数,满足特定的需求。总之,STL仿函数是一种通用的函数对象,可用于算法和容器等STL组件中,可以替代函数指针以满足STL对抽象性的需求。STL仿函数可以是类对象、函数指针或者Lambda表达式。原创 2020-08-12 16:50:40 · 575 阅读 · 1 评论 -
C++ STL教程(16)容器适配器之priorit_queue(下)
文章目录1 基本类型例子2 pair的比较,先比较第一个元素,第一个相等比较第二个3 对于自定义类型这一节主要介绍priority_queue的比较方式。定义:priority_queue<Type, Container, Functional>Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据原创 2020-08-11 16:09:27 · 3214 阅读 · 2 评论 -
C++ STL教程(15) 容器适配器之priority_queue(上)
文章目录前言创建priority_queue的几种方式priority_queue提供的成员函数前言priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能“从一端进(称为队尾),从另一端出(称为队头)”,且每次只能访问 priority_queue 中位于队头的元素。但是,priority_queue 容器适配器中元素的存和取,遵循的并不是 “First in,First out”(先入先出)原则,而是“First in,Largest out”原则。直白的原创 2020-08-11 14:56:05 · 2173 阅读 · 2 评论 -
C++ STL教程(14)容器适配器之queue
文章目录概念queue容器适配器的创建queue容器适配器支持的成员函数概念和 stack 栈容器适配器不同,queue 容器适配器有 2 个开口,其中一个开口专门用来输入数据,另一个专门用来输出数据,如图 1 所示。图 1 queue容器适配器这种存储结构最大的特点是,最先进入 queue 的元素,也可以最先从 queue 中出来,即用此容器适配器存储数据具有“先进先出(简称 “FIFO” )”的特点,因此 queue 又称为队列适配器。其实,STL queue 容器适配器模拟的就是队列这种原创 2020-08-11 17:08:09 · 1670 阅读 · 1 评论 -
C++ STL教程(13)容器适配器之stack
文章目录概念stack容器适配器的创建stack容器适配器支持的成员函数概念stack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。图 1 stack 适配器示意图如图 1 所示,stack 适配器的开头端通常称为栈顶。由于数据的存和取只能从栈顶处进行操作,因此对于存取数据,stack 适配器有这样的特性,即每次只能访问适配器中位于最顶端的元素,也只有移除 stack 顶部的元素之后,才能访问位于栈原创 2020-08-11 16:56:52 · 2174 阅读 · 1 评论 -
C++ STL教程(12)容器适配器总览
什么是容器适配器”适配器是使一种事物的行为类似于另外一种事物行为的一种机制”,适配器对容器进行包装,使其表现出另外一种行为。例如,stack<int, vector<int> >实现了栈的功能,但其内部使用顺序容器vector<int>来存储数据。(相当于是vector<int>表现出了栈的行为)。STL容器适配器的种类STL 提供了 3 种容器适配器,分别为 stack 栈适配器、queue 队列适配器以及 priority_queue 优先权队列适原创 2020-08-10 20:29:44 · 1665 阅读 · 2 评论 -
C++ STL教程(11)容器总结
本文主要讨论C++标准库中的容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,关联容器:set、multiset,顺序容器适配器类型:stack、queue、priority_queue。标准库中的容器分为顺序容器和关联容器。顺序容器(sequential container)内的元素按其位置存储和访问,顾名思义,这些内部元素是顺序存放的;顺序容器内的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。而关联容器的元素按键(key)排序。容器类共享部分公共原创 2020-08-12 16:18:01 · 2178 阅读 · 1 评论 -
C++ STL教程(10)std::set使用
set也是STL中比较常见的容器。set集合容器实现了红黑树的平衡二叉检索树的数据结构,它会自动调整二叉树的排列,把元素放到适当的位置。set容器所包含的元素的值是唯一的,集合中的元素按一定的顺序排列。我们构造set集合的目的是为了快速的检索,不可直接去修改键值。set的一些常见操作:begin() 返回指向第一个元素的迭代器clear() 清除所有元素count() 返回某个值元素的个数empty() 如果集合为空,返回true(真)end() 返回指向最后一个元素之后的迭代器,不是最后一个原创 2020-08-10 20:03:06 · 1728 阅读 · 1 评论 -
C++ STL教程(7)std::pair使用
其功能就是将一对值组合成为一个值,这一对值可以具有不同的数据类型(T1,T2),两个值可以分别用pair的两个公有函数first和second访问。比如在一个函数需要有两个返回值的时候,如果是相同的类型,可能会想到用数组,那么如果不是相同类型的,可能会想到用一个struct,但是为了使用方便可以直接使用c++自带的pair。std::pair是C++ STL的一个模板类,表示一对元素。另外,std::make_pair() 是一个非常方便的函数,可以通过两个参数直接创建一个std::pair对象。原创 2021-04-25 15:56:18 · 2160 阅读 · 1 评论 -
C++ STL教程(9)std::map全网最权威、最完整介绍
定义map是STL的一个关联容器,它是一个单映射容器。它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可以称为该关键字的值,合称key-value)的数据处理能力。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述。原创 2020-08-10 11:41:19 · 12118 阅读 · 1 评论 -
C++ STL教程(6)std::list用法大全,看过可以避免一些坑
1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据域则是本节点的数据;后继元素指针域则保存了后继元素的首地址。其实,list和循环链表也有相似的地方,即:头节点原创 2020-08-09 11:35:17 · 2253 阅读 · 1 评论 -
C++ STL教程(5)迭代器(Iterator)
Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。迭代器的作用:能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来,重载了*,++,==,!=,=运算符。用以操作复杂的数据结构,容器提供迭代器,算法使用迭代器原创 2020-08-09 11:43:12 · 2204 阅读 · 2 评论 -
C++ STL教程(4)定长数组array使用
文章目录前言定义访问遍历修改比较运算总结附录前言std::array是具有固定大小的数组。支持快速随机访问。不能添加或删除元素。其用法比较简单,和vector很类似,这里简单描述下和vector使用不一样的地方。定义需要包含头的头文件文件 #include <array>array模板类的声明template <class T,size_t N> class array;T为包含元素的类型(std::array::value_type),N为元素个数。定义时必须原创 2020-08-08 22:18:33 · 2803 阅读 · 2 评论 -
C++ STL教程(3)万字长文教你学会vector的一切
0、介绍vector 是STL里的一种常用的序列式容器,所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 或者用户自定义的数据类型等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。vector是向量的意思,所以也叫向量容器。和许多容器一样,它是个模板类,所以准确的写法是:vector,T表示存放的元素的数据类型,是一个长度可变的序列容器,即在存储空间不足时,会自动申请更多的内存。使用此容器,在尾部增加或删除元素的效率最高原创 2020-08-08 18:06:22 · 2264 阅读 · 3 评论 -
C++ STL教程(2) 容器简介
1 什么是容器首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对 象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处, 就是“容器类是一种对特定代码重用问题的良好的解决方案”。容器还有另一个特点是容器可以自行扩展。在解决问题时我们常常不知道我们需要存储多少个对象,也就是说我们不知原创 2020-08-08 18:53:45 · 2244 阅读 · 1 评论 -
C++ STL教程(1)STL简介
1 什么是STL?STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常原创 2020-08-08 18:20:09 · 2521 阅读 · 2 评论