STL

C++ STL unordered_multimap容器入门

在掌握unordered_map容器的基础下,我们开始unordered_multimap容器的学习。为什么要求有unordered_map容器的基础呢,原因在于unordered_multimap容器与unordered_map容器十分“相似”,不同点在于unordered_map容器只允许存在唯一键,而unordered_multimap容器能够存储重复键,在理解unordered_map容器

浅谈C++ STL的基本组成部分

通常认为,STL(标准模板库)的体系结构由六大核心组件构成:容器、算法、迭代器、函数对象、适配器和内存分配器。在这套体系中,迭代器、函数对象、适配器和内存分配器作为支撑性组件,共同为容器和算法这两个核心组件提供服务与协作支持。容器是STL的基础,它如同各种规格的“智能储物箱”。这些模板类(如顺序容器vector、list,关联容器map、set)封装了底层数据结构,负责数据的存储、组织和管理,为用

C++ STL二分查找std::lower_bound()函数入门

前面几章,我们已经深入学习了很多查找算法,比如find()函数、find_if()函数、find_first_of()函数等,它们都是线性查找。本节我们开始其他查找方式的学习,比如lower_bound()函数、upper_bound()函数、equal_range()函数和binary_search()函数,它们都能够查找元素,只不过底层采用二分查找的方式,效率比线性查找高。本节我们进行lowe

深度剖析C++ STL priority_queue适配器底层的堆结构

在《C++ STL priority_queue适配器入门》我们就曾提到优先队列的底层结构是堆,具体是二叉堆,这个二叉堆可以类比二叉树进行学习。可能有读者存疑了,本章不是在学习容器适配器吗,怎么会谈到底层结构呢,这么说优先队列底层到底是堆还是vector容器还是deque容器呢?其实,结构和容器是两个完全不同的概念,但是它们可以组合在一起!就适配容器而言,优先队列采用vector容器或deque容

C++ STL multimap容器入门

在掌握map容器的基础下,我们开始multimap容器的学习。为什么要求有map的基础呢,原因在于multimap与map容器十分“相似”,不同点在于map只允许存在唯一键,而multimap能够存储重复键,在理解map的基础上对比归纳这两个容器,能够对序列式容器有个宏观的视角,提高对容器的掌控力。如果读者没有map容器的基础,可跳转《初识模板类pair》开始map容器的学习。由于multimap

千万别认为C++ STL array容器是动态数组!

当我们提到STL容器,一看到array,可别天真地以为它和vector一样是动态数组,实际上,它也是c++里面的普通数组,只不过被封装成一个类,多了一些成员函数罢了。不信我证明给你看:#include<bits/stdc++.h>/*array也是普通数组*/usingnamespacestd;/*数组内存是连续的我们直

C++ STL 排序算法std::partial_sort()函数入门

partial_sort(first , middle , last)排序算法模板函数,”partial“意为”部分“,该排序算法指的是在指定区间[first , last)按排序规则找出前(middle-first)个元素并存放进排序区间[first , middle)中。使用partial_sort(first , middle , last)时需要包含头文件<algorithm>

深入学习C++ STL unordered_map容器的迭代器

前面我们基本了解了unordered_map容器,接下来我们开始学习unordered_map容器的迭代器。由于哈希表的缘故,元素根据键(key)被哈希函数分配到不同的地址,导致元素间地址不连续,所以unordered_map容器的迭代器和同我们之前学过的map容器、set容器的迭代器不一样,它没有”顺序“这个概念,属于前向迭代器,只能通过++的操作而不能通过--的方式访问元素,不支持+8或-3等

C++ STL list容器入门

链表这种数据结构想必大家都不陌生吧!通过指针链接数据,就像锁链一样将数据”穿“起来,充分利用了”零碎内存“,提高内存空间利用率!如果读者还不熟悉链表这种数据结构,可自行跳转《链表》去学习一下链表。在STL库中,list是以双向链表的身份进入序列式容器集合的。每一个节点(node)都具备一前一后各一个指针,分别指向前节点后后节点,可以想到首节点前指针为NULL,尾节点后指针为NULL。链表不同于ve

C++ STL是什么?

在大家已经掌握了 C++ 基础知识,特别是理解了模板这一强大的泛型编程工具之后,我们将开启一个至关重要的新篇章:系统性地学习STL(标准模板库)。作为 C++ 程序员进阶的必经之路,我们首先要从根本上理解两个核心问题:STL 究竟是什么?以及,投入精力去学习它究竟能为我们带来哪些实际的价值?什么是STL?STL,全称为Standard Template Library,中文