STL

C++ STL移除算法std::remove()函数入门

前面一节我们学习了区间交换算法swap_ranges()函数,读者是否还记得它的功能是什么吗?没错,该函数能够高效地交换两个同类型且等长的区间。本节我们将学习一个新的算法——移除算法,顾名思义,移除算法指的是快速移动同目标元素相等的元素到非相等元素区间,注意“移除”并非删除,想要实现删除效果需要配合erase()函数才行。remove()函数就是一个重要的移除函数,”remove“的意思是”移除“

C++ STL按条件查找算法std::find_if()函数入门

前面我们学过查找函数find(beg,end,val),本节我们将继续学习与其功能类似的函数——find_if()函数。find_if(beg , end ,pred),它的功能是在区间[beg , end)找到第一个满足pred条件的第一个元素,并返回指向该元素的迭代器;如果没有找到这个元素,则会返回end()。find_if(beg , end ,pred)中的"pred"

C++ STL无序关联式容如何处理自定义数据类型?

本章我们总共学习无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unordered_multiset容器,他们的底层都是基于哈希表的结构封装起来的一个类。在存储基础数据类型时,键(key)能够通过哈希函数转为哈希值(数据类型为size_t),当我们的键为自定义数据类型时,就需要我们重新定义哈希函数和重载operator&#3

C++ STL关联式容器简介

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

C++ STL迭代器简介

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

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

插入迭代器适配器,又被称为插入迭代器或插入器(往后统一“插入迭代器”命名),故名思意,就是使用迭代器插入元素。一般我们都是通过迭代器读改元素,比如我要读改一个元素(it为非可读迭代器,假设*it数据类型为Int):*it=0;//改cout<<*it;//读而使用插入迭代器时:*it=0;//插入一个元素插入迭代

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::reverse_copy()函数入门

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

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

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