STL

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

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

C++ STL forward_list容器入门

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

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

前面一节我们学习了比较算法mismatch()函数,读者是否还记得它的功能是什么吗?没错,它不仅仅能判断两个序列是否完全相等,在不等的情况下,它还能帮我们找出哪一对元素不相等。本节我们将学习新的比较算法——lexicographical_compare()函数。“lexico”表示“字典”,“graphical”表示“书写的”,这里lexicographical_compare()函数指的是对两个

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

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

深入学习C++ STL set容器的迭代器

前面我们初识了set容器,本节将会详细介绍set容器的迭代器,set容器迭代器和map容器、multimap容器一样都是双向迭代器,只能进行++或--操作,不能进行随机访问。同此,set容器有正向迭代器begin()、end(),有反向迭代器rbegin()、rend(),还有常量迭代器cbegin()、cend()、crbegin()、crend(),(c表示const,可读不可改)。由于set

还有人不知道C++ STL vector容器的emplace_back()成员函数?

在前面的章节《初识STL中的vector容器》我们曾谈到vector插入元素的方法,想必大家只知道push_back()这个尾插函数吧,其实,在c++11后,vector还有一个尾插函数,那就是emplace_back(),en的意思是进入,place的意思是位置,emplace_back()就是放到最后面的意思。不是都有push_back()了吗,这么还会有emplace_back()呢?其实这

C++STL教程入门

C++STL教程入门在上一篇文章我们已经基本的了解了什么是C++的STL(标准模板库),在本章中绝大多数内容都是在介绍常用的STL模板的使用以及其一些参数的介绍,但是请注意,STL由于其设计之初就容纳了大量的程序员思维结……

C++ STL区间交换算法std::swap_ranges()函数入门

前面一节我们学习了工具函数move() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够高效地移动对象资源,同时源位置的元素会被置于有效但未指定的状态。本节我们将学习一个新的算法——区间交换算法,顾名思义,区间交换算法就是高效交换两个同类型且等长的区间。swap_ranges() 函数就是一个重要的区间交换算法,"swap" 意为"交换","

C++ STL 函数重名时,你会选择成员函数还是模板函数?

到目前为止,我们已经学习了所有容器和大部分模板函数,读者是否遇到过这样的问题:算法头文件<algorithm>和容器的成员函数”撞衫“了,该选择哪一个好呢?比如查找函数,算法库中提供了一个模板函数find(),所有的关联式容器都有这个同名的成员函数find(),都能够判断是否存在该元素:#include<iostream>#include<vector>#i

C++ STL unordered_multiset容器入门

本节我们将进行unordered_multiset容器学习。对比前面我们学过的unordered_set容器,unordered_multiset容器的“特殊之处”在于允许出现重复值,也就是说unordered_multiset容器将“退化”成普通数组,由于其内的元素被哈希函数映射到桶数组里,所以还保持“无序”性,有别于普通数组。unordered_