STL
文章平均质量分 66
Kallou
这个作者很懒,什么都没留下…
展开
-
【C++笔记】关于push_back(vector<int>());
今天在刷leetcode题的时候见到如上三句代码,很有意思。第一句创建了一个实体为vertor的容器,可以理解为一个二维数组;第二句话相当于分隔符了,往二维数组里插入空的vector(),可以理解为分行,即二维数组的下一行;第三句话则是在每一行里插入数据。 以二叉树的层序遍历为例:输入:[3,9,20,null,null,15,7]输出:...转载 2022-07-12 12:38:29 · 644 阅读 · 2 评论 -
C++ STL priority_queue()容器适配器详解
优先级队列priority_queue()是STL中的一种容器适配器,需导入#include以使用。它具备以下特点:T:队列中存储的元素类型Container:底层容器。默认为vector,还可以用deque结构作为底层容器。Compare:排序规则。默认为less,即降序排序。还可以取greater升序排序。源码: priority_queue()是一种容器适配器,也就意味着它“不生产代码,只是代码的搬运工”。priority_queue()的构造函数及其方法的底层......原创 2022-07-02 20:15:59 · 626 阅读 · 0 评论 -
C++ STL deque容器详解
详解deque容器的结构、迭代器、迭代器常用函数、deque常用函数、所重载的运算符原创 2022-06-27 22:13:49 · 608 阅读 · 0 评论 -
C++ STL iterator_traits()——萃取机
1.当算法想要操作容器的时候,它需要通过迭代器获取容器的一些信息,具体是回答五个问题:1.iterator_category 迭代器的类型:迭代器是一种泛型指针,因此对不同的容器的具体设计也不同(比如说有些迭代器可以++,也可以--,有些则只能++)2.difference_type 两个迭代器可能存在的最大距离:也就是容器的最大容量3.value_type 容器的值类型4.reference5.pointer为了回答这五个问题,迭代器需要定义五种数据类型。上图一种的原创 2022-05-09 17:25:36 · 875 阅读 · 0 评论 -
C++ STL vector容器详解——(2)push_back()剖析、vector的n倍增长特性与vector迭代器
1.push_back()push_back()函数用来往vector的末尾插入新元素,它的具体实现源码如下(基于G2.9):1.push_back函数首先会检查是否还有空间,有就插入,没有就调用insert_aux2.insert_aux也会先做一次剩余空间判断,这是因为调用该函数的不止push_back,可能存在其他插入函数没有做剩余空间检查。如果没有剩余空间,则根据原大小的n倍来计算新空间的大小,然后在内存中找到可以存放这个大小内容的空间。(这就是vector的n倍增长特性).原创 2022-05-09 17:14:13 · 1233 阅读 · 0 评论 -
C++ STL vector()容器详解——(1)创建、插入、删除
vector()是一种具有连续结构的序列式容器,它没有自定义的查找函数,使用std::find查找元素时间复杂度为O(n)。它依赖于start、finish、end_of_storage三根指针来控制整个容器,它们分别表示vector的起始位置、有效部分的终点位置和实际的终点位置,因此vector容器本身的大小是12 byte。在本文中,我将多次使用size()和capacity()这两个vector的成员函数,前者表示有效部分的大小,后者表示实际部分的大小,关于二者的差异稍后解释。1.如何创建一个原创 2022-05-09 16:34:30 · 1214 阅读 · 0 评论