![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 87
C++STL容器介绍
bananawolf
这个作者很懒,什么都没留下…
展开
-
STL复习-序列式容器和容器适配器部分
STL复习原创 2024-07-07 21:56:19 · 3217 阅读 · 0 评论 -
Hash应用
一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器,插入元素时给k个计 数器(k个哈希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍存储 空间的代价来增加删除操作。首先哈希切割,felti = Hashfunc(log)%1000,相同的 log算出来的felti一定是一样的,所以需要相同的文件标号进行比较就可以。2.先遍历一个文件放到一个位图中,然后读取第二个文件的值去查询,如果存在就是交集,然后还要把位图对应的位置置零,为了去重。分别给出精确算法和近似算法。原创 2024-03-16 16:38:28 · 619 阅读 · 0 评论 -
C++ 哈希
3. 开散列增容 桶的个数是一定的,随着元素的不断插入,每个桶中元素的个数不断增多,极端情况下,可 能会导致一个桶中链表节点非常多,会影响的哈希表的性能,因此在一定条件下需要对哈希 表进行增容,那该条件怎么确认呢?对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。如果该位置中没有元素则直接插入新元素,如果该位置中有元素发生哈希冲突, 使用线性探测找到下一个空位置,插入新元素。中,元素关键码与其存储位置之间没有对应的关系,因此。原创 2024-03-11 15:15:07 · 660 阅读 · 0 评论 -
C++ 红黑树
红黑树,是,但在,可以是。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,,因而是接近平衡的。原创 2024-03-04 23:25:31 · 505 阅读 · 0 评论 -
C++ AVL树
3.2.平衡因子更新节点删除了,被删除节点的父亲节点的平衡因子也更新了,但是是否需要继续更新,当前位置是否平衡都需要考虑平衡因子的正常范围是[-1,1]原创 2024-02-07 18:19:12 · 576 阅读 · 0 评论 -
C++ 搜索二叉树的删除
情况1和情况2:如果这个父亲只有一个孩子要照顾,或者一个也没有,那么他想要脱身,只需要把这个孩子托付给他的长辈,没有就是nullptr,我们可以把这个过程叫托孤。2.情况三,月嫂的托孤,月嫂不一定是父亲的右孩子(左子树最大值的前提下),月嫂可能就是要被删除节点的左孩子,所以也要妥善处理。其次,他要满足照顾这两个孩子的条件,这个节点的key值要比左子树的每个节点key都要大,比右子树的每个节点key都要小,1.就不需要再找父节点了,这样还少了判断,被删除节点是父亲节点的左孩子还是右孩子。原创 2024-02-06 18:00:13 · 579 阅读 · 0 评论 -
C++ map和set
因为其底层为的数据结构,里面存储的是元素本身,比如:vector、list、deque也是用来存储数据的,与序列式容器不同的是,其里面。判断大小关系,建立的容器。原创 2024-02-06 16:29:40 · 929 阅读 · 0 评论 -
二叉树oj笔记
给你二叉树的根节点root,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对"()"表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。无法省略第一个空括号对,否则会破坏输入与输出一一映射的关系。首先在顺序上符合前序遍历:1 2 4 3如果在递归遍历子树之前和之后都加括号 预期结果:1(3()())判断省略条件a. root->right == nullptr 要省略。原创 2024-02-04 01:16:19 · 1062 阅读 · 0 评论 -
reverse_iterator反向迭代器(萃取版)
在第三个里函数的返回值是reverse_iterator类型,而返回的对象是一个iterator对象。4. operator* 其实是类成员先找到前一个再--返回解引用后的内容。5.operator-> 其实是类成员先找到前一个再--返回取地址后的内容。这里iterator内部就是一个指针,可以用指针构造一个iterator对象。那么是不是所以的满足这个条件的迭代器本身也有满足反向迭代器的潜质。能用上反向迭代器, 说明容器支持双向读取,双向迭代器。所以反向迭代器是一个。原创 2023-11-24 23:14:39 · 729 阅读 · 0 评论 -
priority_queue优先级队列
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)优先队列被实现为容器适配器容器适配器即将特定容器类封装作为其底层容器类底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。容器应该可以通过随机访问迭代器访问标准容器类vector和deque满足这些需求。默认情况下,如果没有为特定的priority_queue类实例化指定容器类,则使用vector。原创 2023-11-24 21:37:40 · 1032 阅读 · 0 评论 -
deque容器结构学习笔记
deque双端队列,就像是list和vector的结合。原创 2023-11-22 21:20:53 · 89 阅读 · 0 评论 -
STL-list学习笔记
当函数的返回值是内置类型int,double等,返回值产生的临时对象其实是const int ,const double。显然这不行,const_iterator迭代器,目的是date的内容不能被改变,需要可以++和--在链表节点之间访问。当类包含一个指针指向一个对象,那么const 这个类,这个指针指向不能改变,指向的对象反而可以修改。--end()可行,因为自定义类型的临时对象具有常性,但不是真正的具有常性,可以被修改。链表在空间不连续,指针的加减不能很好的访问,通过类定义,内部实现运算符重载。原创 2023-11-18 23:48:41 · 115 阅读 · 0 评论 -
STL_vector关于迭代器和深拷贝的学习
vector其实是表示可变大小数组的序列容器。是在连续空间下的,可以随机访问。满足数组的特性。在vs和g++的vector迭代器其实本质都是指针,但是vs对指针进行了封装。Linux下g++编译器,vector的迭代器就是原生态指针T*。(T是模板)原创 2023-11-16 00:38:59 · 147 阅读 · 0 评论 -
STL-string类
1. string是表示字符串的字符串类2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3. string在底层实际是:basic_string模板类的别名,typedef basic_string string;4. 不能操作多字节或者变长字符的序列。注意:在使用string类时,必须包含#include头文件以及using namespace std;原创 2023-11-08 23:12:30 · 146 阅读 · 0 评论