STL

C++ STL 排序算法std::nth_element()函数入门

nth_element(beg , pos , end)排序算法模板函数,”nth“意为”第几个“,该排序算法指的是在指定区间[beg , end)按排序规则找出位置在pos上的元素是谁并进行填充,此函数会打乱原有序列。使用nth_element(beg ,pos , end)时需要包含头文件<algorithm>。使用nth_element(beg ,pos

深度剖析C++ STL无序关联式容器的底层构造

C++ STL无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unordered_multiset容器,其底层构造都是基于哈希表封装的。如果读者还不具备哈希基础的话可自行跳转《哈希算法实例详解》学习。简单来说,无序关联式容器可以看作指针数组+链表的奇妙组合。原理可理解为:我们向堆区开辟了一段连续空间(可理解为数组),空间大小

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

前面我们学习的查找算法都是单个元素进行查找,本节我们学习一个按序列进行查找的算法——find_end()。find_end(first1,last1,first2,last2)的功能是在主序列[first1,last1)中寻找最后一次出现的子序列[first2,last2),如果找到就返回最后一次出现在主序列中的子序列的起始迭代器;如果找不到就主序列的last1迭代器。举个例子,主序列是{&#39

C++ STL序列式容器是什么?

序列式容器是STL中的一类容器,它们以严格的线性顺序来存储元素。这个顺序由元素被插入的位置决定,每个元素都有固定的前后关系。序列式容器包括以下容器:容器类型数据结构长度特性访问效率插入删除效率内存布局array<T,N>固定数组编译时固定O(1) 随机访问不支持增删元素连续内存vector<T>动态数组运行时可变O(1) 随机访问尾部O(1),中间O(n)连续内存deque

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

前面一节我们学习了equal_range()函数,该函数的功能是在指定有序区间内查找第一个高于目标元素的元素。本节我们开始学习新的二分查找函数——binary_search()函数。“binary”意为“二分的”,“search”意为“查找”,binary_search()函数的功能是在指定有序范围内判断是否存在目标元素。binary_search()函数的语法格式为:/*查找[fir

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

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

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

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

不要试图修改C++ STL有序关联式容器内元素的键(key)!

C++ STL库有序关联式容器我们已经学习完了。想必有不少读者存疑:能不能修改元素的键(key)呢?答案是肯定的,不能!为什么,就像是下标对于数组一样,是数组属性的一部分,键(key)对于有序关联式容器来说也是如此,键(key)关乎容器内元素的访问和排序,是基本的属性规则,不允许修改。其次,pair模板对象的底层是:pair(const_T1&__a,c

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

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

C++STL教程入门

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