STL

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

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

C++ STL unordered_map容器如何获取值(value)?

在基本掌握unordered_map容器及其迭代器的基础下,本节将带领读者一起学习如何获取unordered_map容器中元素的value。前面我们提到unordered_map容器和map容器一样都重载了'[]'符号,所以能够通过'[]'添加或查看value;还有find()输入key获取指向value的迭代器;其实我们还能通过at()、equal_range()

C++ pair模板类入门

当谈到关联式容器时,我们第一反应就要是键值对了,关联式容器内的元素通过键值对的方式存在,方便我们直接通过key(键)来操作元素(value)值,提高了操作效率。键值对通过把两个元素”捆绑“起来,实现一一对应的关系。今天我们重点讲解构成关联式容器的基础,模板类——pair。pair的意思是”一对“,类似”情侣“的概念,将两个数据”捆绑“起来。其本质是一个结构体,存储了两个任意数据类型,能够进行初始化

为什么说C++ STL是C/C++程序员的基本功?

对于C++程序员来说,熟练使用STL库是最基本的技能,尤其是在企业招聘的时候,招聘要求都会明确声明熟练运用STL库,因为这直接关系到开发效率、代码质量与程序性能。企业将STL掌握程度视为评估候选人专业素养的核心指标:初级水平要求能准确选用容器和算法完成业务逻辑;中级水平则必须理解底层机制,如vector扩容代价、迭代器失效原因,并能进行性能优化;高级水平更进一步,需能结合智能指针、移动

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

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

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

上一节我们学习了序列查找算法search()函数,本节我们将继续学习序列查找算法——search_n()函数。我们知道,search()函数的功能是找寻主序列里第一次出现子序列的位置,那么这个search_n()函数到底有什么功能呢?“n”有“几个的意思”,search_n()函数的功能是在一个主序列中找寻第一次出现的n个连续且相等元素,类比search()函数的话就相当于是子序列变成了常量序列(

C++ STL queue适配器入门

queue适配器,又被叫做”队列“,与deque双端队列不同,它禁止随机插入元素并且只能从队尾进队首出,和就像坐地铁排队一样,不允许插队行为且遵守先入先出规则。queue适配器的成员函数也比较简单,除了元素增删位置不同其他与stack适配器没有什么区别。push()、emplace()把元素放进队尾,pop()把队首元素删除,size()查看元素总数,empty()检查队列是否为空,swap()交

C++ STL list容器如何访问元素?

在《初识STL库中的list容器》那节我们就可以看到list容器内所有成员函数,如果我们仔细观察,我们就会发现list既没有at()成员函数又没有data()指针,所以我们不能通过at()或data()来对list进行元素访问。当然,由于链表的元素储存地址不是连续的,所以无法通过'[]'重载进行元素访问,所以list只能“认命”,只能通过最基本的元素访问方式——迭代器进行元素访问。

C++ STL set容器如何删除元素?

前面一节我们学会了3种方法为set容器添加元素,分别是insert()、emplace()和emplace_hint()。如果我们需要删除set内元素,读者第一时间会想到什么?没错,erase()成员函数。set容器主要就是通过erase()删除元素的,clear()实现元素清空。下面我们就通过代码分别展示如何为set容器删除元素。#include<iomanip>#include&

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

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