STL

C++ STL迭代器辅助函数distance()入门

本节我们将继续进行第二个迭代器函数distance(first , last)的学习。同样,在使用迭代器函数时,我们需要第一时间包含头文件<iterator>。“distance”,意为“距离”,它返回的是两个同类型迭代器的相对距离,其区间为[first , last)。该函数适用前向迭代器、随机迭代器、双向迭代器以及输入迭代器。下面,让我们通过代码的方式来学习distance(fir

C++ STL比较算法std::mismatch()函数入门

上一节我们学习了比较算法equal()函数,读者是否还记得它的功能是什么吗?没错,它能够帮助我们快速比较两个序列。本节我们将学习新的比较算法——mismatch()函数。“mis”表示“否定”,“match”表示“匹配”,与equal()函数的功能不同,mismatch()函数不仅能判断两个序列是否相等,它还能找出第一个不相同的元素在哪。mismatch()函数的语法格式为://形式1

C++ STL priority_queue适配器入门

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

C++ STL 迭代器辅助函数advance()入门

本章到此为止,我们已经学习了所有的迭代器适配器。但我们并不止步于此,我们还可以对迭代器有更深的理解!从本节开始,我们将进入迭代器函数的学习。那什么是迭代器函数呢?对于这个疑惑,读者无需担心,因为迭代器函数就像普通函数一样有参数和返回值两个基本属性,它能使我们更好地操作函数。值得注意的是,迭代器函数需要包含<iterator>头文件才能使用。迭代器函数并不多,就只有4个:advance(

C++ STL遍历算法std::for_each()函数入门

到目前为止,排序、合并、查找模板函数我们都已经深入接触过了,读者是否能够感受到<algorithm>算法头文件的便利之处?对于STL库给定的完美容器我们直接用,高效算法我们直接调,大大提高了我们的工作效率。本节我们将继续学习另外一个模板函数——for_each()。for_each(beg , end , op):这里表示对区间[beg , end)进行op操作,这里op既可以是普通函

C++ STL迭代器适配器简介

本节我们将进入迭代器适配器的学习。迭代器适配器,顾名思义,就是自定义迭代器,在原有迭代器的基础上进行接口的约束或升级。如果读者还不知道什么是适配器的话,可自行跳转《C++ STL容器适配器简介》深入学习。对于SLT库中的所有容器,我们总共有5种迭代器,分别是前向迭代器、双向迭代器、随机访问迭代器、输入迭代器和输出迭代器。我们通常使用迭代器来进行容器的遍历和快速访问首尾元素,这里演示一下通过迭代器遍

C++ STL map容器中,insert()和'[]'谁的插入效率更高?

在前面《如何为STL库中的map添加元素?》我们总结了4种方式为map容器插入元素,最常用的就是insert()和'[]'了。相必读者一定很好奇到底是谁的插入效率更高,用哪一个更好。这里先不直接公布答案,先看看直观的代码测试:#include<bits/stdc++.h>//万能头#include<string>#include<map>//

C++ STL forward_list容器入门

就像array是vector的“轻量型”一样,list也有自己的“轻量型”——forward_list。什么是forward_list,简单来说,forward_list就是单链表,每个节点只包含一个后驱指针,如果读者忘记单链表的相关知识,可跳转《链表》补充相关知识。在C++11后,为了追求轻便高效的容器,STL大师将list“优化”为forward_list,forward_list仅支持头增头

C++ STL vector容器入门

就普通数组而言,array不过是封装一个类的把戏罢了,只能称之为pro版数组;而对于vector来说,则是一台完美的重装坦克,升级为promax版数组,兼顾动态扩展和多种功能,成为算法竞赛上的常用数组容器。vector与前面两者不同,能够做到动态扩展,相比传统数组而言更加灵活。如果读者对array是否为动态数组而感到疑虑,则可自行跳转《千万别认为array容器是动态数组!》去一探究竟。vector

C++ STL填充算法std::fill()函数入门

前面一节我们学习了区间交换算法remove()函数等移除算法,读者是否还记得它们的功能分别是什么吗?没错,remove()函数能够移除与目标元素完全相等的元素,如果想要自定义比较规则可使用remove_if()函数,需要将与目标元素不等的元素复制到另外一个容器可以使用remove_copy()函数,如果既要定义比较规则又要复制不等元素那就使用remove_copy_if()函数。本节我们将学习一个