STL

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

本节我们将继续进行序列查找的学习——search()函数。读者还记得我们之前学过的find_end()函数吗?如果忘记了可前往《C++ STL序列查找算法find_end()函数入门》自行学习。find_end()函数的功能是找寻主序列里最后一次出现子序列的位置,search()函数恰恰相反,search()函数的功能是找寻主序列里第一次出现子序列的位置。search(first1,last1,f

C++ STL二分查找std::binary_search()函数入门

前面一节我们学习了equal_range()函数,该函数的功能是在指定有序区间内查找第一个高于目标元素的元素。本节我们开始学习新的二分查找函数——binary_search()函数。“binary”意为“二分的”,“search”意为“查找”,binary_search()函数的功能是在指定有序范围内判断是否存在目标元素。binary_search()函数的语法格式为:/*查找[fir

C++ STL 移动迭代器入门

本节我们将详细介绍移动迭代器适配器,又称之为“移动迭代器”。那么什么是移动迭代器呢?简言之,“*it”表示迭代器解引用,为左值引用,能够访问和二次赋值对象;而使用移动迭代器后,“*it”表示右值引用,直接更改元素的内部指针,实现资源转移。移动迭代器的强大之处在于高效率“移动”对象,但是需要谨慎使用,因为移动后“源对象”处于非定义状态,可能会造成程序的崩溃。为了更加详细地介绍移动迭代器,我们可以举个

C++ STL旋转算法std::rotate()函数入门

前面一节我们学习了移除算法 unique() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够移除序列中相邻的重复元素。本节我们将学习一个新的算法,旋转算法——rotate() 函数。"rotate" 意为"旋转",从名称就能看出,这个函数用于对序列进行循环移位操作,就像旋转一个圆盘一样。rotate() 函数的语法格式如下:template<&

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

前面一节我们学习了比较算法lexicographical_compare()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列实现字典序比较行为。本节我们将学习排列组合算法——next_permutation()函数。“next”表示“下一个”,“permutation”表示“置换”,这里next_permutation()函数的功能将序列按照"字典顺序"重新排列成下

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

上一节我们学习了一元谓词判断算法,读者是否还记得他们分别是什么吗?没错,它们分别是all_of()函数、any_of()函数、none_of()函数,其中all_of()函数为”全称判断“,any_of()函数为”存在判断“,none_of()函数为”全否判断“。本节我们将学习新的算法——比较算法,那什么有时比较算法呢?就像字符串比较一样,比我我们有两个字符串s1和s2:strings

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

在实际工作学习中,我们经常需要对容器进行排序,比如我们用一个vector容器来维护Dotcpp编程的用户,当用户刷新排名界面时,我们就需要对vector容器根据用户刷题量来进行排名了。看到“排序”这两个字,相信读者脑海里一定有这些词一闪而过:冒泡排序、选择排序、插入排序、归并排序、快排、堆排等排序算法。我相信读者能够通过这些基本算法来对vector容器进行排序,只不过效率有点慢,所以今天我们要介绍

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

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

C++ STL unordered_multimap容器入门

在掌握unordered_map容器的基础下,我们开始unordered_multimap容器的学习。为什么要求有unordered_map容器的基础呢,原因在于unordered_multimap容器与unordered_map容器十分“相似”,不同点在于unordered_map容器只允许存在唯一键,而unordered_multimap容器能够存储重复键,在理解unordered_map容器

C++ STL stack容器适配器入门

栈是一种数据结构,遵循LIFO(last in first out)后进先出的原则。栈就像挤地铁一样,后上的人先出去。栈有两种行为,一个是”压栈“——push(val)或emplace(val),既插入元素,可以理解为头插法;一个是”弹栈“,既删除顶部元素,可以理解为头删法。我们可以查看栈的元素大小size(),判断栈是否为空empty()以及同类型的栈相互交换swap()。栈是一种很有趣的数据结