STL

C++ STL vector容器冗余大量空间,你会怎么做?

在上一节里我们讨论了通过reserve()这个成员函数去预存空间,避免“动态扩展行为”来影响效率。如果还有读者不知道这个小技巧的,可自行跳转《vector性能优化小技巧》。如果说预存reserve()是“增”,那么肯定会有“减”这个概念。在实际上工作中,当我们发现vector预存的空间太大,远远高于需求时,我们就需要“减”的这个操作,将闲置空间释放提供更多的内存。此操作我有两个方法,分别是通过sw

C++ STL容器该如何选择?

到目前为止,我们已经把所有容器全部学习完毕!包括:序列式容器:array容器、vector容器、deque容器、list容器、forward_list容器。有序关联式容器:map容器、set容器、multimap容器、multiset容器。无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unorder

C++ pair模板类入门

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

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

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

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

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

千万别认为C++ STL array容器是动态数组!

当我们提到STL容器,一看到array,可别天真地以为它和vector一样是动态数组,实际上,它也是c++里面的普通数组,只不过被封装成一个类,多了一些成员函数罢了。不信我证明给你看:#include<bits/stdc++.h>/*array也是普通数组*/usingnamespacestd;/*数组内存是连续的我们直

C++STL之Pair类模板

C++STL之Pair类模板1.简介Pair表示“一对”的意思,pair将两个数据合成一组数据,在如下两种变成情况中,我们更加常见与使用pair,第一是使用STL中的map(在上一节讲过),对于map而言……

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

流迭代器适配器,指的是将输入输出流当作迭代器来使用,分两种:istream_iterator用于写入流对象;ostream_iterator用于读取流对象。流迭代器的目的是让流对象适配容器,桥接算法以实现声明式的数据管理通道。那什么是流对象呢?读者可能还不熟悉这个名词。其实,我们从一开始接触编程的时候就学过流对象了!读者还记得”cout<<"Hello World!&quot

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

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

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

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