STL

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

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

C++ STL list容器入门

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

C++STL之Map容器

C++STL之Map容器1.简介Map也是一种关联容器,它是键—值对的集合,即它的存储都是以一对键和值进行存储的,Map通常也可以理解为关联数组(associativearray),就是每一个值都有一个键与值一一……

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迭代器简介

迭代器是STL中连接容器与算法的桥梁,它模拟指针的行为,为不同容器提供统一的元素访问接口。无论底层是数组、链表还是树结构,迭代器都能以相同的方式遍历元素,使得算法可以独立于具体容器实现。这种设计实现了数据存储与操作的彻底分离,是STL泛型编程理念的核心体现。迭代器根据功能强弱分为五种主要类别,形成层次化的能力体系:输入迭代器是最基础的类型,支持单向读取操作,适用于一次性遍历场景(如从数据流读取)。

C++ STL转换算法std::transform()函数入门

前面一节我们学习了填充算法 generate() 函数和 generate_n() 函数,读者是否还记得它们的功能分别是什么吗?没错,generate() 函数能通过生成器为序列中的每个元素赋值,generate_n() 函数能够从指定位置开始为指定个数的元素重新赋值。本节我们将学习一个转换算法——transform() 函数,"transform" 意为"转换&qu

C++ STL序列查找算法std::adjacent_find()函数入门

本节我们将继续进行序列查找的学习——adjacent_find()函数。“adjacent”的意思是“相邻的”,adjacent_find(beg , end)函数的功能是:用于在序列[beg , end)中查找第一对相邻元素,这两个元素满足特定条件(默认是绝对相等),有返回值,如果找到第一对相邻相等元素,则返回指向该对元素的第一个元素的迭代器;否则返回容器的end()。它的函数模型是://查找&

C++ STL stack适配器实现计算器

利用栈先入先出这种”对称性“,我们可以自己做一个计算器(支持'+'、'-'、'*'、'/'、'^'、'()')。主要思路是维护运算栈的单调递增,运算栈的单调递增指的是完全保持从左到右由低到高的运算顺序,维护同级运算符,避免“头重脚轻”,运算错误。比如我们要计算“1+2-3/4^5-6",从人的

C++ STL map容器如何添加元素?

为了给map容器添加元素,我们有4种方法:1. 最简洁的方式就是通过'[]',中括号内为key,通过map[key]=value的形式为map添加元素(这里如果已存在key,则进行覆盖);2. 然后就是大家熟悉的insert(),insert()在此处既可单个插入,又能多个插入,还可以通过迭代器参数优化从指定位置寻找插入位置;3. 然后就是emplace()直接构造了,但是仅能添加