STL

C++ STL unordered_set容器入门

本节我们将进入unordered_set容器的学习。对于unordered_set容器,我们至少能够知道它的两点规则,即:1. 不会像unordered_map容器一样进行自动排序,反而由于哈希表的缘故,元素根据键被哈希函数映射到桶数组里,显得“杂乱无序”;2. 存储的元素已不再是键值对,而是“值”且不允许存在重复值,我们可以认为它键值一体,还有就是其值不能通过迭代器或成员函数修改。接下来我们将通

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

前面我们学会《如何为STL库中list添加元素?》,本节将为读者详细介绍如何删除list容器内的元素。当然,读者也可自行跳转《初识STL库中的list容器》查询list成员函数表,查找“删除”、“移除”等关键字查看具体函数,加深记忆。如今学到这里,看到删除字样,我们第一反应就要是这个pop_front()、pop_back()头删尾删,还有erase()按位置迭代器删,clear()一键全清。不同

C++STL之Vector容器

C++STL之Vector容器1.概念Vector可以翻译为向量,或向量数组,至于为什么以向量命名,可以理解为一维空间也是存在向量的。Vector是最简单的序列是容器,就像数组一样,向量使用连续的存储位置作为元素,这意味着它们的元……

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

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

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

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

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

上一节我们具体了解了vector容器的迭代器及其使用方法,本节主要详细介绍各种访问vector内元素的方法,vector容器的访问方式和array非常像,可以跳转至《如何访问array容器内的元素?》将array和vector的访问方式类比起来学习,但是有一点需要牢牢记住,vector可不能通过get()函数模板进行访问!。这里也会详细讲解vector内元素的访问方式,因为学习既需要触类旁通,也需

C++ STL迭代器适配器简介

本节我们将进入迭代器适配器的学习。迭代器适配器,顾名思义,就是自定义迭代器,在原有迭代器的基础上进行接口的约束或升级。如果读者还不知道什么是适配器的话,可自行跳转《C++ STL容器适配器简介》深入学习。对于SLT库中的所有容器,我们总共有5种迭代器,分别是前向迭代器、双向迭代器、随机访问迭代器、输入迭代器和输出迭代器。我们通常使用迭代器来进行容器的遍历和快速访问首尾元素,这里演示一下通过迭代器遍

C++ STL set容器入门

对于SLT库中的关联式容器,我们第一个学到的容器就是map,它属于有序关联式容器且只允许唯一键值存在;当允许重复键值存在时,我们就学习了multimap。今天我们开始学习set容器,set可以被视为是特殊的map,它要求键必须等于值。所以,插入时只需要放入一个元素即可,可见“键值对”的概念被隐式转换了。set最大的特点是能够自动去重和排序,其底层是红黑树实现,时间复杂度为O(log n),相比动态

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

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

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

前面我们已经讲了对vector的增、查操作,本节将会详细介绍如何对vector进行元素的删除。下表展示了所有能够进行元素删除的vector的成员函数:函数参数及介绍pop_back()参数:无介绍:删除向量的最后一个元素,大小减1,容量不变erase(position)参数:const_iterator position介绍:删除指定位置的单个元素,