C++
文章平均质量分 91
yoouuung_
码农进阶…
展开
-
浅谈设计模式
建造者模式是一种创建型设计模式,使用多个简单的对象一步一步构建成一个复杂的对象,能够将一个复杂的对象的构建与它的表示分离,提供一种创建对象的最佳方式。代理模式指的是代理控制对其他对象的访问,也就是代理对象控制原对象的引用。工厂模式是一种创建型设计模式,在工厂模式中,创建对象时候不会对上层暴露创建逻辑,而是通过一个共同结构指向新创建的对象,以此实现创建-使用的分离。目标类和代理对象实现一个接口,先访问代理对象再通过代理对象访问目标对象。代理模式结构包括:一个真正要访问的对象(目标类),一个是代理对象。原创 2023-11-10 11:25:38 · 193 阅读 · 0 评论 -
C++中实现一些特殊的类|设计模式
拷贝只会发生在两个场景中:拷贝构造以及赋值运算符重载。想要让一个类禁止拷贝,只需要该类。原创 2023-09-23 17:38:31 · 262 阅读 · 2 评论 -
C++11新特性之智能指针|内存泄漏
内存泄漏:内存泄漏指是因为疏忽或者错误造成程序未能释放已经不再使用的内存情况。内存泄漏并不是指内存在物理上的消息,而是应用程序分配某段内存后,因为涉及错误,失去了对该段内存的控制,造成了内存的浪费。内存泄漏的危害:如os,后台服务等,出现内存泄漏会导致程序响应越来越慢,最终卡死。// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.原创 2023-09-23 15:57:11 · 419 阅读 · 0 评论 -
C++11的一些新特性|线程库|包装器|lambda表达式
在c++11之前,涉及到多线程问题,都是和平台相关的,wins和linux下各有自己的接口,这使代码的可移植性比较差,在c++11中最重要的特性就是对线程进行支持了,使用是不需要依赖第三方库。而且在原子操作中还引入了原子类thread():构造一个线程对象,没有关联任何线程函数,即没有启动线程thread(fn,args1,arg2...)构造一个线程对象,并关联线程函数fn,args1,args2...为线程函数参数get_id()获取线程id。原创 2023-09-22 21:02:47 · 150 阅读 · 0 评论 -
C++之map,set|AVL树|红黑树
{}T _data;int _bf;// 节点的颜色// 红黑树节点的定义{}// 节点的左孩子// 节点的右孩子// 节点的双亲(红黑树需要旋转,为了实现简单给出该字段)// 节点的值域// 节点的颜色。原创 2023-12-26 20:46:18 · 902 阅读 · 3 评论 -
C++面经之继承|菱形继承和虚拟继承|一些关于继承的笔试面试题
继承机制是面向对象程序设计,使代码可以复用的最重要的手段,它允许程序员在保持原有特性的基础上进行扩展,增加功能,这样产生新的类称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。//基类 personpublic:protected:int _age;//学号;s.print();return 0;原创 2023-09-13 21:15:48 · 97 阅读 · 0 评论 -
C++面经之多态|多态的原理|虚函数
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person,Person对象买全价票,Student对象买半价票。1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写重写:函数名相同,参数类型相同,返回值相同。原创 2023-09-14 19:52:22 · 328 阅读 · 1 评论 -
C++11的一些新特性|右值引用|STL中的一些变化
如果没有自己实现移动构造,且没有实现析构,拷贝构造,拷贝赋值重载中的任意一个,那么编译器会自己生成一个默认移动构造。在类中增加移动构造,移动构造本质上是将参数右值的资源窃取,占为己有,那么就不用做深拷贝,所以叫它移动构造,就是窃取别人的资源来构造自己。原来c++类中,有6个默认成员函数:构造,析构,拷贝构造,拷贝赋值,取地址重载,const取地址重载。传统的c++语法中就有引用的语法,而c++11中新增了右值引用的语法特性,无论是左值引用还是右值引用,都是给对象取别名。可以让你更好的控制要使用的默认函数。原创 2023-09-22 17:09:35 · 390 阅读 · 1 评论 -
二叉树进阶经典笔试题_1
本文主要记录了一些经典笔试题的解法原创 2023-12-05 17:27:32 · 995 阅读 · 0 评论 -
c++进阶--二叉搜索树模拟实现
一、二叉搜索树1.二叉搜索树概念二叉搜索树又称为二叉排序树,它或者是一颗空树,或者具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值左、右子树都是二叉搜索树2.二叉搜索树操作1.二叉搜索树的查找从根节点开始比较,查找,如果比根节点值大,往右走查找,比根节点值小,往左走查找最多查找高度次,走到空节点还没找到,则说明这个值在树中不存在。2.二叉搜索树的插入若为空树,则直接新增节点,赋值给root指针。原创 2023-08-08 17:26:58 · 362 阅读 · 3 评论 -
C++入门之stl六大组件--stack和queue源码深度剖析及模拟实现
通过阅读官方文档:1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器并提供一组特定的成员函数来访问其元素,将特定类作为其底层的元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。原创 2023-08-07 15:28:08 · 243 阅读 · 2 评论 -
C++入门之stl六大组件--List源码深度剖析及模拟实现
list: 模仿实现stl的list - Gitee.comT _data;//list的成员//list的构造 初始只有一个头节点list()//list的一些成员函数//通过迭代器定位begin和end//通过迭代器对指定pos位置进行增删改查//这里是要通过pos的指针,找到这个节点 对pos进行解引用assert(pos!=end());delete cur;//打印while(it!cout<<*it;原创 2023-08-06 19:38:39 · 1117 阅读 · 0 评论 -
C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口
本节主要阅读了vector的源码,以及vector的使用vector是表示可变大小数组的序列容器。就像数组,vector也采用连续空间来存储元素,即可以使用下标对vector元素访问,但是它的大小是可以动态改变的,并且它的大小会被容器自动处理本质上,vector使用动态分配数组来存储它的元素,当新元素插入,就需要重新分配大小增加存储空间。它的做法是,动态开辟一个新的数组,然后将元素移动进来。时间代价较高。事实上,每当一个新的元素加入到容器,并不会每次都重新分配空间。原创 2023-07-26 15:34:42 · 1025 阅读 · 4 评论 -
C++入门之stl六大组件--String库函数的模拟实现
本章为了深入了解string类的底层原理,用数据结构的思想来管理资源模拟实现出string类的一些接口。具体来说,1.能像int类型那样定义变量,并且支持赋值,赋值。2.能用做函数的参数类型以及返回类型。3.能用做标准库容器的元素类型,即vector/list/deque的value_type。(摘自coolshell)本文主要模仿stl库中的一些源码,技术有限,如有错误请指正。原创 2023-07-20 21:57:00 · 121 阅读 · 1 评论 -
C++入门之stl六大组件--String库函数的介绍
本章主要介绍了string类以及string类的一些接口函数。原创 2023-07-19 11:07:31 · 228 阅读 · 0 评论 -
C++入门之内存管理|复习C中的malloc,realloc,calloc|内存分布|内存管理|new delete|operator new|operator delete
class Apublic://构造: _a(a)//注:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);原创 2023-07-17 16:02:35 · 116 阅读 · 0 评论 -
C++入门之类和对象(下)
本章对构造函数,static成员,友元,内部类,匿名对象,编译器的优化拷贝对象进行简单总结,技术有限,如有错误请指正。原创 2023-07-15 12:05:04 · 219 阅读 · 2 评论 -
C++入门,类和对象(中)
本文主要介绍了类中的6个默认成员函数,技术有限,如有错误请指正。原创 2023-07-13 11:47:33 · 138 阅读 · 0 评论 -
C++入门,类和对象(上)
/类体:由成员函数和成员变量组成//记得有分号类体重内容为类的成员:类的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。...//person.hpublic:public:......一般第二种更为规范class Datepublic://这里无法区分是形参 还是成员变量。原创 2023-06-16 11:53:42 · 282 阅读 · 0 评论 -
C++入门,一些C++基本概念介绍
什么是C++:C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,需要高度的抽象和建模时,C语言则不合适。C++是基于C语言产生的,它可以进行C语言的过程化程序设计,又可以以抽象数据类型为特点的,基于对象的程序设计,还可以进行面向对象的程序设计。定义命名空间,需要使用namespace关键字,后面跟命名空间的名字,接一对{}即可,{}中即为命名空间的成员1、正常的命名空间定义//命名空间中可以定义变量/函数/类型int val;2、命名空间可以嵌套int a;int b。原创 2023-06-15 21:50:14 · 778 阅读 · 2 评论