
C++与数据结构学习
文章平均质量分 93
本专栏主要内容是C++的学习,和一些数据结构,诸如哈希表,红黑树,位图等
小鬼yalo
不断学习
展开
-
【C++篇】C++11新特性总结1
public:// 移动构造函数// 移动赋值运算符if (this!// 调用移动构造函数// 调用移动赋值运算符return 0;原创 2025-02-07 16:24:32 · 1049 阅读 · 6 评论 -
【C++篇】 异常处理
异常处理是C++用于管理 程序运行时错误的核心机制,通过等关键字实现。它允许将错误检测与处理逻辑分离,提升代码的可读性和健壮性。原创 2025-02-09 11:05:14 · 1159 阅读 · 1 评论 -
【C++篇】智能指针
以管理Date类为例:class Datepublic:{}~Date()private:int _year;int _month;int _day;public://构造函数:_ptr(ptr){}//......//......private:T* ptr;原创 2025-02-09 17:33:07 · 803 阅读 · 10 评论 -
【C++篇】红黑树封装 实现map和set
本篇基于上篇【红黑树的实现】,代码也是基于红黑树的代码实现map和set的封装。原创 2025-01-20 19:03:52 · 1490 阅读 · 5 评论 -
【C++篇】C++11新特性总结2
c++11新特性,lambda,包装器原创 2025-02-08 13:58:22 · 730 阅读 · 0 评论 -
【C++篇】哈希表
如下图,我们删除30,会导致查找20失败,当我们给每个位置加⼀个状态标识{EXIST,EMPTY,DELETE},删除30就可以不用删除值,而是把状态改为DELETE,那么查找20时遇到EMPTY才停,就可以找到20。,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形我们就需要自己实现⼀个仿函数传给这个参数,实 现这个仿函数的要求就是尽量key的每个值都参与到计算中,让不同的key转换出的整形值不同。负载因子越小,代表哈希冲突的概率越低,空间利用率越低。原创 2025-02-01 22:05:29 · 2085 阅读 · 2 评论 -
【C++篇】map和set的使用
set的声明如上,T就是set底层关键字(key)的类型。set默认要求T是支持比较大小的,如果不支持或者想按自己的比较方式走,可以传仿函数给第二个模板参数。set底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第三个参数一般情况下是不需要传后两个参数的set底层是用红黑树实现的,增删查的效率为O(logN),迭代器遍历走的是中序遍历,所以是有序的map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型。原创 2024-12-16 11:18:11 · 861 阅读 · 10 评论 -
【C++篇】AVL树的实现
本篇是基于二叉搜索树写的,详情可以去看上篇【二叉搜索树】原创 2024-12-27 12:40:28 · 1282 阅读 · 14 评论 -
【C++篇】位图与布隆过滤器
有一些场景,由大量数据需要判断是否存在,而这些数据不是整形,比如string,就不能使用位图了,这些场景就需要布隆过滤器来解决。利用多个哈希函数和位图实现,哈希函数内容见上篇文章【哈希表】。核心原理位数组(Bit Array):长度为 m 的二进制数组,初始全为0。哈希函数集合:k个独立的哈希函数,每个函数将元素映射到位数组的某个位置。以string类型为例:而这种冲突是无法避免的,因为位图中只存储了状态,即0或1,无法改变。所以我们只能做到降低冲突概率,对于一个字符串,让它映射到多个位置上。原创 2025-02-03 19:14:41 · 950 阅读 · 8 评论 -
【C++篇】红黑树的实现
本篇会用到上篇【AVL树的实现】中的旋转知识。原创 2025-01-16 23:03:43 · 2605 阅读 · 13 评论 -
C++篇之多态
类成员函数前⾯加virtual修饰,那么这个成员函数被称为虚函数。注意⾮成员函数不能加virtual修饰。原创 2024-11-20 15:36:14 · 963 阅读 · 9 评论 -
C++之内存管理
对于自定义类型,new和delete除了开空间,还会调用构造函数和析构函数。注意:在申请自定义空间时,new会调用构造函数,delete会调用析构函数。而malloc和free不会。原创 2024-09-24 20:26:40 · 994 阅读 · 3 评论 -
C++中string函数用法总结
string() //无参构造,初始化为空串string(const string& str) //用str拷贝构造string(size_t n,char c) //用n个字符c初始化string(const char* s,size_t n) //用字符串s的前n个字符初始化string(const string& str,size_t pos,size_t len=npos) //将字符串str,从下标pos位置开始,选取长度为len个的字符,来初始化。原创 2024-10-12 15:49:42 · 1350 阅读 · 1 评论 -
c++类和对象中
如果一个类中什么成员都没有,简称空类。默认成员函数:用户自己没有显示实现,编译器会自动生成的成员函数叫做默认成员函数。 重点是构造,析构,拷贝构造和赋值重载这四个函数。构造函数是特殊的成员函数,名字虽然叫做构造,但他不是用来开空间的,而是来完成初始化工作的。当实例化对象完成后,就会调用构造函数来对成员变量进行初始化。构造函数的特点:(1)函数名与类名相同。(2)无返回值(返回值什么都不写,void也不写)(3)对象实例化时系统会自动调用构造函数(4)构造函数可以重载 (5)如果类中没有显示定义构造函数原创 2024-07-26 18:32:24 · 1029 阅读 · 0 评论 -
C++中vector常用函数总结
vector可以理解为一个边长数组,可以存储不同的类型,int ,double,char,结构体等。也可以才能出STL标准容器,如set,string,vector等。原创 2024-10-16 11:29:35 · 1591 阅读 · 2 评论 -
C++基础
注:这里域后面不用加“;”,与结构体和类的定义不同。6,访问域的成员,需要用到。原创 2024-07-16 19:51:44 · 692 阅读 · 0 评论 -
C++中list的使用及模拟实现
/定义节点T _data;//存储的数据//指向前一个节点//指向后一个节点//构造函数{}原创 2024-10-18 21:49:11 · 1217 阅读 · 1 评论 -
类和对象下
而有默认构造的,可以不用在初始化列表写,编译器会自动调用的默认构造进行初始化。6,总的来说,成员变量初始化尽量使用初始化列表。2,内部类是一个独立的类,它不属于外部类,不能通过外部类的对象去访问内部类的成员。2,每个成员变量在初始化列表只能出现一次,语法上可以理解初始化列表是成员变量初始化定义的地方。4,静态成员函数可以访问静态成员变量,但不能访问非静态的,因为没有this指针。5,非静态的成员函数,可以访问任意的静态成员变量和静态成员函数。,这三类是必须在初始化列表进行初始化的,不能在函数体内初始化。原创 2024-07-29 21:12:26 · 818 阅读 · 0 评论 -
C++篇之继承
1. 基类private成员在派⽣类中无论以什么⽅式继承都是不可⻅的。这⾥的不可见是指基类的私有成员 还是被继承到了派⽣类对象中,但是语法上限制派⽣类对象不管在类里面还是类外面都不能去访 问它。2,基类private成员在派⽣类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派⽣类 中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。3,实际上⾯的表格我们进⾏⼀下总结会发现,基类的私有成员在派⽣类都是不可见。原创 2024-11-11 15:35:12 · 1219 阅读 · 9 评论 -
C++中【stack-queue】的使用介绍及模拟实现
1,队列queue遵循先进先出的原则,从容器一段插入元素,另一端提取元素。元素从队尾入队列,从队头处队列。2,队列queue作为适配器实现,和栈一样,底层用的也是双端队列—deque。3,底层容器可以是标准模板容器之一,比如vector,list,deque等,要求是这些容器可以是实现一下操作:empty:判断容器是否为空size:容器的元素个数front:返回对头元素back:返回队尾元素push_back:在队尾插入元素pop_front:在队头出元素,也就是删除队列中的头部元素。原创 2024-10-22 20:27:24 · 1028 阅读 · 1 评论 -
C++基础+类和对象上
/由成员函数和成员变量组成(1)class为定义类的关键字,classname为类名, {}中为类的主体。类中的变量称为类的属性或类的成员变量,类中的函数称为类的方法或成员函数。(2)为了区分成员变量,一般在成员变量前加上_,比如_i。(3)定义在类中的成员函数默认是内联函数。但是是否展开还是取决于编译器。(4)c++中struct也可以定义类,c++兼容c语言的用法,同时struct升级成了类,与class定义类相比,struct中的成员属性默认是public,而class默认是。原创 2024-07-25 17:16:28 · 745 阅读 · 0 评论 -
【C++】二叉搜索树
二叉搜索树又称二叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树:• 若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值。• 若它的右⼦树不为空,则右⼦树上所有结点的值都⼤于等于根结点的值。原创 2024-11-25 18:43:22 · 986 阅读 · 12 评论 -
Date日期类的实现
首先定义Date类,包含三个成员变量,以及几个默认成员函数。class Datepublic:Date(int year=1,int month=1,int day=1)//实现的默认构造函数,全缺省_day = day;Date(const Date& d)//拷贝构造Date& operator=(Date& d)//赋值运算符重载cout原创 2024-07-28 15:43:54 · 758 阅读 · 1 评论