STL

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

到目前为止,我们已经把主要的排序模板函数讲完了,读者还记得有哪些吗?这里笔者通过表格向读者展示一下,希望读者对这些排序模板函数有基本掌握。函数名功能sort对指定范围内的元素进行通用、高效的排序。不保证相等元素的原始相对顺序。通常使用内省排序(快速排序+堆排序),平均和最优时间复杂度为O(N log N)。stable_sort对指定范围内的元素进行稳定排序。保证相等元素在排序后的相对顺序与其在原

C++ STL vector容器冗余大量空间,你会怎么做?

在上一节里我们讨论了通过reserve()这个成员函数去预存空间,避免“动态扩展行为”来影响效率。如果还有读者不知道这个小技巧的,可自行跳转《vector性能优化小技巧》。如果说预存reserve()是“增”,那么肯定会有“减”这个概念。在实际上工作中,当我们发现vector预存的空间太大,远远高于需求时,我们就需要“减”的这个操作,将闲置空间释放提供更多的内存。此操作我有两个方法,分别是通过sw

为什么说C++ STL是C/C++程序员的基本功?

对于C++程序员来说,熟练使用STL库是最基本的技能,尤其是在企业招聘的时候,招聘要求都会明确声明熟练运用STL库,因为这直接关系到开发效率、代码质量与程序性能。企业将STL掌握程度视为评估候选人专业素养的核心指标:初级水平要求能准确选用容器和算法完成业务逻辑;中级水平则必须理解底层机制,如vector扩容代价、迭代器失效原因,并能进行性能优化;高级水平更进一步,需能结合智能指针、移动

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

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

C++ STL复制算法std::reverse_copy()函数入门

前面一节我们学习了反向复制算法 copy_backward() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够从序列的末尾开始向开头进行复制。本节我们将学习一个真正反转元素顺序的算法——reverse_copy() 函数。"reverse" 意为"反转","copy" 意为"复制",从名称就能看出,这个函数不仅

C++ STL分区算法std::partition()函数入门

本节我们进行分区算法——partition()函数的学习。”partition“意为“隔断”,partition(beg,end,pred)函数的功能是将一个序列“切割”成两个序列(逻辑意义上操作,并非创建两个序列),前一个序列满足一元谓词,后一个序列不满足一元谓词,并返回指向第二个序列的起始迭代器。举个例子:比如我们有一个序列{1,3,5,6,7},我们想要把该序列分区,一个奇数区,一个偶数区,

C++ STL queue容器适配器模拟银行活动

queue适配器,遵守FIFO先入先出的规则,能够很好地模仿现实生活中的排队行为,下面就让我们通过queue适配器模拟用户到银行存取钱活动。情景分析:固定生成5名用户,随机生成他们的名字和目的,然后进行动态统计,排队完成所有银行活动。#include<iostream>#include<queue>#include<random>#include<u

C++ STL vector容器如何访问元素?

上一节我们具体了解了vector容器的迭代器及其使用方法,本节主要详细介绍各种访问vector内元素的方法,vector容器的访问方式和array非常像,可以跳转至《如何访问array容器内的元素?》将array和vector的访问方式类比起来学习,但是有一点需要牢牢记住,vector可不能通过get()函数模板进行访问!。这里也会详细讲解vector内元素的访问方式,因为学习既需要触类旁通,也需

C++STL之Map容器

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

C++ STL排列组合算法std::prev_permutation()函数入门

前面一节我们学习了排列组合算法——next_permutation()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列按照字典序重新排列成下一个更大的组合。本节我们将学习它的对称函数——prev_permutation()函数。"prev"表示"前一个","permutation"表示"置换",这里prev