C++STL
文章平均质量分 92
crossoverpptx
I am nobody.
展开
-
C++STL:关联容器之map和multimap
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、结构体或类自定义的类型。more通常情况下,map 容器中存储的各个键值对都选用 string 字符串作为键的类型。与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下,map 容器选用。原创 2023-07-14 14:23:25 · 1410 阅读 · 1 评论 -
C++STL:无序关联容器
继 map、multimap、set、multiset 关联容器之后,本节介绍一类“特殊”的关联容器,它们常被称为“无序容器”、“哈希容器”或者“无序关联容器”。more注意,无序容器是 C++ 11 标准才正式引入到 STL 标准库中的,这意味着如果要使用该类容器,则必须选择支持 C++ 11 标准的编译器。和关联容器一样,无序容器也使用键值对(pair 类型)的方式存储数据。关联式容器的底层实现采用的树存储结构,更确切的说是红黑树结构;无序容器的底层实现采用的是哈希表的存储结构。原创 2023-07-16 13:36:47 · 751 阅读 · 1 评论 -
C++STL:关联容器之set和multiset
前面介绍了 map 容器和 multimap 容器,类似地,C++ STL 标准库中还提供有 set 和 multiset 这 2 个容器,它们也属于关联容器。more和 map、multimap 容器不同,使用 set 容器存储的各个键值对,要求键 key 和值 value 必须相等。显然,第一组数据中各键值对的键和值不相等,而第二组中各键值对的键和值对应相等。对于 set 容器来说,只能存储第 2 组键值对,而无法存储第一组键值对。原创 2023-07-15 20:25:41 · 328 阅读 · 0 评论 -
C++STL:关联容器
顺序容器存储的都是 C++ 基本数据类型,而关联容器则大不一样,此类容器在存储元素值的同时,还会为各元素额外再配备一个值(又称为“键”,其本质也是一个 C++ 基础数据类型或自定义类型的元素),它的功能是在使用关联容器的过程中,如果已知目标元素的键的值,则直接通过该键就可以找到目标元素,而无需再通过遍历整个容器的方式。more弃用顺序容器,转而选用关联容器存储元素,往往就是看中了关联容器可以快速查找、读取或者删除所存储的元素,同时该类型容器插入元素的效率也比序列式容器高。原创 2023-07-13 15:56:04 · 116 阅读 · 0 评论 -
C++STL:顺序容器之forward_list
forward_list 是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表。more如下图所示:上图中,H 表示链表的表头。a) 表示单链表,b) 表示双向链表。不难看出,使用链表存储数据最大的特点在于,其并不会将数据进行集中存储(向数组那样),换句话说,链表中数据的存储位置是分散的、随机的,整个链表中数据的线性关系通过指针来维持。原创 2023-07-12 13:05:21 · 1543 阅读 · 0 评论 -
C++STL:顺序容器之list
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。more下图展示了 list 双向链表容器是如何存储元素的:可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。原创 2023-07-11 09:02:40 · 735 阅读 · 0 评论 -
C++STL:顺序容器之deque
deque 是 double-ended queue 的缩写,又称双端队列容器。moredeque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可以根据需要修改自身的容量和大小。和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。原创 2023-07-10 09:39:04 · 1298 阅读 · 0 评论 -
C++STL:顺序容器之vector
vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。原创 2023-07-09 14:08:35 · 685 阅读 · 0 评论 -
C++STL:顺序容器
所谓顺序容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。morearray(数组容器):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值。原创 2023-07-08 15:28:01 · 772 阅读 · 0 评论 -
C++STL:容器与迭代器
简单的理解容器,它就是一些模板类的集合,但和普通模板类不同的是,容器中封装的是组织数据的方法(也就是数据结构)。STL 提供有 3 类标准容器,分别是顺序容器、排序容器和哈希容器,其中后两类容器有时也统称为关联容器。原创 2023-07-07 19:31:18 · 819 阅读 · 0 评论 -
C++STL
STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。moreSTL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 标准库的重要组成部分。如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装。STL 就位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供,而是以源代码的形式提供。原创 2023-07-06 12:11:41 · 103 阅读 · 0 评论