STL

C++ STL关联式容器简介

前面我们已经把序列式容器全部学习了,包括array、vector、deque、list和 forward_list,本节我们将进行关联式容器的学习。那什么是关联式容器呢?在回答这个问题之前,读者是否还记得序列式容器查找和修改元素都是按什么条件进行的,答案是“位置”,不管是vector、deque还是 list,他们都是以线性容器的方式,依靠“位置”进行查找和删改;关联式容器并不依靠“位置”进行元素

C++ STL迭代器简介

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

C++ STL 流迭代器适配器入门

流迭代器适配器,指的是将输入输出流当作迭代器来使用,分两种:istream_iterator用于写入流对象;ostream_iterator用于读取流对象。流迭代器的目的是让流对象适配容器,桥接算法以实现声明式的数据管理通道。那什么是流对象呢?读者可能还不熟悉这个名词。其实,我们从一开始接触编程的时候就学过流对象了!读者还记得”cout<<"Hello World!&quot

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

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

C++ STL 排序算法总结

本节将对我们本章所学到的所有排序模板进行一个总结。读者还记得我们学过哪四个排序函数吗?它们分别是:排序函数函数功能sort对指定范围内的元素进行通用、高效的排序。不保证相等元素的原始相对顺序。通常使用内省排序(快速排序+堆排序),平均和最优时间复杂度为O(N log N)。stable_sort对指定范围内的元素进行稳定排序。保证相等元素在排序后的相对顺序与其在原始序列中的相对顺序一致。当内存充足

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

前面初识set容器时我们就提到过set容器比map容器要简单一些,主要通过insert()或emplace()添加元素。当然我们还可以通过emplace_hint()带条件地为set容器添加元素,所以总体来说,我们有三种方法为map容器添加元素。下面我将通过代码分别演示这三种方法:#include<bits/stdc++.h>//万能头,以效率为中心#include&lt

C++ STL vector容器如何在指定位置前插入元素?

对于vector容器,我们现在已经很熟悉尾插法push_back()和emplace_back()了,并且我们还知道在面对复杂对象的时候,使用emplace_back()的效率更高。但是当我们需要在vector内其他位置插入元素,该怎么办呢?别着急,insert()或emplace()能够帮助你解决这个问题。vector里,insert()和emplace()都能够在指定位置前插入元素,相同点是他

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

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

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

上一节我们学习了partitioin()函数和stable_partition()函数,读者是否能够记起它们的功能以及对他们进行区分呢?本节我们将继续进行分区算法——partition_copy()函数的学习。该函数与前面两个函数大不相同,究其根本是partition_copy()函数能够保证不破破坏原序列,并且把分区后的元素复制到新的两个序列里。比如原序列是{1,2,3,4,5,6,7,8,9,

C++ STL priority_queue适配器入门

priority_queue适配器,又被称为“优先队列”,priority意为“优先权”,这里的priority指的是适配器会将所有元素中权值最高的元素置于顶部(默认是权值最高,但是我们可以通过仿函数来更改规则),以展现优先级。同时优先队列没有FIFO(先入先出)这个规则,插入元素是通过push(),删除元素是通过pop(),不能进行随机元素访问,能且仅能操作堆顶元素top(),同队列相比有很大的