C++
文章平均质量分 88
C++学习专栏
bananawolf
这个作者很懒,什么都没留下…
展开
-
STL复习-序列式容器和容器适配器部分
STL复习原创 2024-07-07 21:56:19 · 3288 阅读 · 1 评论 -
C++部分复习笔记下
C++语法复习笔记原创 2024-07-03 20:17:05 · 1157 阅读 · 0 评论 -
C++部分复习笔记上
C++部分复习上原创 2024-07-02 23:34:56 · 948 阅读 · 1 评论 -
C++ 异常
主要介绍c++是如何使用抛异常和捕获异常,以及异常的优缺点原创 2024-05-18 22:07:21 · 824 阅读 · 1 评论 -
C++11 可变参数模板 | lambda表达式
可变参数模板的使用介绍,lambda表达式详解,包装器function和bind的介绍使用原创 2024-05-18 21:23:03 · 696 阅读 · 0 评论 -
C++ 11
目录1. 统一的列表初始化1.1 {}初始化1.2 std::initializer_list2. decltype3. 右值引用和移动语义3.1 左值引用和右值引用3.2 左值引用与右值引用比较3.3 右值引用使用场景和意义3.4 右值引用引用左值及其一些更深入的使用场景分析3.5 完美转发4 新的类功能在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自 定义的类型,使用初始原创 2024-03-18 23:32:40 · 872 阅读 · 0 评论 -
Hash应用
一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器,插入元素时给k个计 数器(k个哈希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍存储 空间的代价来增加删除操作。首先哈希切割,felti = Hashfunc(log)%1000,相同的 log算出来的felti一定是一样的,所以需要相同的文件标号进行比较就可以。2.先遍历一个文件放到一个位图中,然后读取第二个文件的值去查询,如果存在就是交集,然后还要把位图对应的位置置零,为了去重。分别给出精确算法和近似算法。原创 2024-03-16 16:38:28 · 633 阅读 · 0 评论 -
C++ 哈希
3. 开散列增容 桶的个数是一定的,随着元素的不断插入,每个桶中元素的个数不断增多,极端情况下,可 能会导致一个桶中链表节点非常多,会影响的哈希表的性能,因此在一定条件下需要对哈希 表进行增容,那该条件怎么确认呢?对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。如果该位置中没有元素则直接插入新元素,如果该位置中有元素发生哈希冲突, 使用线性探测找到下一个空位置,插入新元素。中,元素关键码与其存储位置之间没有对应的关系,因此。原创 2024-03-11 15:15:07 · 673 阅读 · 0 评论 -
C++ 红黑树
红黑树,是,但在,可以是。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,,因而是接近平衡的。原创 2024-03-04 23:25:31 · 522 阅读 · 0 评论 -
C++ AVL树
3.2.平衡因子更新节点删除了,被删除节点的父亲节点的平衡因子也更新了,但是是否需要继续更新,当前位置是否平衡都需要考虑平衡因子的正常范围是[-1,1]原创 2024-02-07 18:19:12 · 589 阅读 · 0 评论 -
C++ 搜索二叉树的删除
情况1和情况2:如果这个父亲只有一个孩子要照顾,或者一个也没有,那么他想要脱身,只需要把这个孩子托付给他的长辈,没有就是nullptr,我们可以把这个过程叫托孤。2.情况三,月嫂的托孤,月嫂不一定是父亲的右孩子(左子树最大值的前提下),月嫂可能就是要被删除节点的左孩子,所以也要妥善处理。其次,他要满足照顾这两个孩子的条件,这个节点的key值要比左子树的每个节点key都要大,比右子树的每个节点key都要小,1.就不需要再找父节点了,这样还少了判断,被删除节点是父亲节点的左孩子还是右孩子。原创 2024-02-06 18:00:13 · 653 阅读 · 0 评论 -
C++ map和set
因为其底层为的数据结构,里面存储的是元素本身,比如:vector、list、deque也是用来存储数据的,与序列式容器不同的是,其里面。判断大小关系,建立的容器。原创 2024-02-06 16:29:40 · 939 阅读 · 0 评论 -
二叉树oj笔记
给你二叉树的根节点root,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对"()"表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。无法省略第一个空括号对,否则会破坏输入与输出一一映射的关系。首先在顺序上符合前序遍历:1 2 4 3如果在递归遍历子树之前和之后都加括号 预期结果:1(3()())判断省略条件a. root->right == nullptr 要省略。原创 2024-02-04 01:16:19 · 1079 阅读 · 0 评论 -
C++多态
多态是在不同继承关系的类对象去调用同一函数,产生了不同的行为。那么在继承中要构成多态还有两个条件1. 必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:即被virtual修饰的类成员函数称为虚函数。在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类)抽象类不能实例化出对象。派生类继承后也不能实例化出对象只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。原创 2024-01-27 01:06:18 · 771 阅读 · 0 评论 -
C++继承
定义格式:类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected 成员派生类的private 成员基类的protected 成员派生类的protected成员派生类的protected 成员派生类的private 成员基类的private成员在派生类中不可见在派生类中不可见在派生类中不可见不可见是指基类的私有成员还是被继承到了派生类对象中,但是。原创 2024-01-23 21:28:40 · 1111 阅读 · 0 评论 -
reverse_iterator反向迭代器(萃取版)
在第三个里函数的返回值是reverse_iterator类型,而返回的对象是一个iterator对象。4. operator* 其实是类成员先找到前一个再--返回解引用后的内容。5.operator-> 其实是类成员先找到前一个再--返回取地址后的内容。这里iterator内部就是一个指针,可以用指针构造一个iterator对象。那么是不是所以的满足这个条件的迭代器本身也有满足反向迭代器的潜质。能用上反向迭代器, 说明容器支持双向读取,双向迭代器。所以反向迭代器是一个。原创 2023-11-24 23:14:39 · 803 阅读 · 0 评论 -
priority_queue优先级队列
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)优先队列被实现为容器适配器容器适配器即将特定容器类封装作为其底层容器类底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。容器应该可以通过随机访问迭代器访问标准容器类vector和deque满足这些需求。默认情况下,如果没有为特定的priority_queue类实例化指定容器类,则使用vector。原创 2023-11-24 21:37:40 · 1081 阅读 · 0 评论 -
deque容器结构学习笔记
deque双端队列,就像是list和vector的结合。原创 2023-11-22 21:20:53 · 102 阅读 · 0 评论 -
STL-list学习笔记
当函数的返回值是内置类型int,double等,返回值产生的临时对象其实是const int ,const double。显然这不行,const_iterator迭代器,目的是date的内容不能被改变,需要可以++和--在链表节点之间访问。当类包含一个指针指向一个对象,那么const 这个类,这个指针指向不能改变,指向的对象反而可以修改。--end()可行,因为自定义类型的临时对象具有常性,但不是真正的具有常性,可以被修改。链表在空间不连续,指针的加减不能很好的访问,通过类定义,内部实现运算符重载。原创 2023-11-18 23:48:41 · 126 阅读 · 0 评论 -
STL_vector关于迭代器和深拷贝的学习
vector其实是表示可变大小数组的序列容器。是在连续空间下的,可以随机访问。满足数组的特性。在vs和g++的vector迭代器其实本质都是指针,但是vs对指针进行了封装。Linux下g++编译器,vector的迭代器就是原生态指针T*。(T是模板)原创 2023-11-16 00:38:59 · 165 阅读 · 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 · 161 阅读 · 0 评论 -
C++模板
class 类模板名// 类内成员定义class Listpublic:_top = 0,{}~List();// 使用析构函数演示:在类中声明,在类外定义。int _top;List::~List()// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if (_a)原创 2023-10-26 17:01:25 · 52 阅读 · 0 评论 -
C/C++内存管理
int _b;new/delete对于【自定义类型】除了开空间 还会调用构造函数和析构函数注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与 free不会。在自定义类型上 new / delete 会比 operator new / operator delete 多调用构造和析构。原创 2023-10-26 15:07:09 · 121 阅读 · 0 评论 -
C++ 初始化列表
C++ 初始化列表原创 2023-10-24 23:18:39 · 188 阅读 · 1 评论 -
类和对象(下)
初始化列表,explicit关键字,static成员,友元,内部类,匿名对象,连续的构造对象编译器优化原创 2023-10-24 23:06:50 · 63 阅读 · 0 评论 -
C++日期类的实现
【代码】C++日期类的实现。原创 2023-10-17 21:44:03 · 126 阅读 · 0 评论 -
类和对象(中)
默认成员函数:构造函数,析构函数,拷贝构造,赋值运算符重载,取地址及const取地址操作符重载原创 2023-10-15 16:49:11 · 60 阅读 · 1 评论 -
C++ 类和对象(上)
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。在C语言中喜欢用struct,而在C++中更喜欢class。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,className是类的名字类体中内容称为类的成员;类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数类定义的两种方式:1.声明和定义都放在类体里class Timepublic:_day = day;原创 2023-10-11 23:20:09 · 365 阅读 · 0 评论 -
C++入门
主要包含,命名空间,C++输入输出,缺省参数,函数重载,引用,内联函数,auto,基于范围的for循环,nullptr原创 2023-10-09 23:02:09 · 237 阅读 · 2 评论