STL

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

学到这里,我们已经掌握map容器的基本知识了,增、改、查,但还没有学过删。本节将继续带领读者一起学习如何为map容器删除元素。erase()是删除map容器内元素的主要函数,这里通过代码简单介绍如何通过erase()删除元素:#include<iomanip>#include<iostream>#include<map>#inclu

C++ STL unordered_multiset容器入门

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

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

前面一节我们学习了upper_bound()函数,该哈数的功能是在指定有序区间内查找第一个高于目标元素的元素。本节我们开始学习新的二分查找函数——equal_range()函数。“equal”意为“对等的”,“range”意为“范围”,equal_range()函数的功能是在指定有序范围内查找等于目标元素的元素范围,作用区间和lower_bound()函数一样都必须为有序区间,比如我们有一个有序序

C++ STL 反向迭代器适配器入门

反向迭代器适配器,又被称为反向迭代器或逆向迭代器(往后统一“反向迭代器”命名),顾名思义,就是用来逆序输出元素的。读者请牢牢记住,反向迭代器适配器的适配迭代器要么是双向迭代器,要么是随机迭代器,绝不可能是前向迭代器!其原因也可想而知,适配器只是对现有现有功能进行包装,无法为底层迭代器添加原本不支持的操作,比如forward_list这种前向迭代器,它原本就不支持--操作,就别指望forward_l

C++ STL deque容器如何增删元素?

前面我们已经充分了解deque的基本知识以及访问方式,本节将一口气为读者详细介绍如何对deque进行增删操作,加快我们的学习进度。这里可以类比vector的增删操作,《vector容器怎么在指定位置前插入元素?》、《vector容器怎么删除元素呢?》,读者通过对比学习,总结归纳出自己的宝贵经验,提高对STL容器的掌控力。我们先谈谈“增”这个操作:对比vector,我们都知道deque能够实现头增尾

C++STL之Set容器

C++STL之Set容器1.简介Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树(可能读者对此不太了解,等但学到树论与图论的章节的时候就会……

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

和很多容器一样,map有正向迭代器begin()、end(),有反向迭代器rbegin()、rend(),还有常量迭代器cbegin()、cend()、crbegin()、crend(),(c表示const,可读不可改),这些迭代器都是双向迭代器,只能进行++或--操作,不能+5或-8随机访问。本节抓重点,主要讲map的其他迭代器。在前一节我们就总结了map常用成员函数,可跳转《初识ST库中的ma

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

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

C++ STL array容器入门

在C++11标准之前,STL中并没有array这个容器。程序员们主要使用C风格数组和vector来管理序列数据,但这两种方式都存在各自的局限性。C风格数组过于简单,无法动态调整大小;vector虽然安全好用,但是过于笨重。至此,array容器孕育而生。array本质上是对C风格数组的轻量级封装,保留了性能优势的同时增加了安全性。下表展示了array容器支持的成员函数和成员变量:成员函数功能说明be

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

前面一节我们学习了条件复制算法copy_if()函数,读者是否还记得它的功能是什么吗?没错,该函数能够根据条件筛选元素并复制到目标区域。本节我们将学习一个反向复制算法——copy_backward()函数。”back“意为”后面“,”forward“意为”朝某个方向“,”copy_backward“表示”从后面往前复制“,从名称就能看出,这个函数与常规复制方向不同,它从序列的末尾开始向开头进行复制