C++
文章平均质量分 92
pythoncjavac++
这个作者很懒,什么都没留下…
展开
-
C++的IO流
使用itoa()函数使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。原创 2023-08-14 22:17:38 · 419 阅读 · 0 评论 -
C++智能指针
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.原创 2023-07-21 13:49:20 · 84 阅读 · 0 评论 -
二叉树进阶
对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。2. KV模型:每一个关键码key,都有与之对应的值Value,即的键值对。1. K模型:K模型即只有key作为关键码,结构中只需要存储Key即可,关键码即为需要搜索到的值。二叉搜索树(BST Binary Search Tree),也称二叉排序树或二叉查找树。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。原创 2023-07-17 22:38:30 · 93 阅读 · 0 评论 -
C++内存管理
new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理1. 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请2. 在申请的空间上执行N次构造函数delete[]的原理。原创 2023-07-12 22:26:50 · 135 阅读 · 0 评论 -
C++异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了// 服务器开发中通常使用的异常继承体系public:, _id(id){}protected:int _id;public:{}原创 2023-07-20 13:01:37 · 60 阅读 · 0 评论 -
C++特殊类设计
拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。如果这个单例对象在多线程高并发环境下频繁使用,性能要求较高,那么显然使用饿汉模式来避免资源竞争,提高响应速度更好。如果单例对象构造十分耗时或者占用很多资源,比如加载插件啊, 初始化网络连接啊,读取。文件啊等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化,就会导致程序启动时非常的缓慢。final关键字,final修饰类,表示该类不能被继承。原创 2023-07-19 22:24:32 · 58 阅读 · 0 评论 -
start&&queue(模拟实现及底层原理)
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作。原创 2023-07-17 13:25:45 · 671 阅读 · 0 评论 -
vector模拟实现
假设模拟实现的vector中的reserve接口中,使用memcpy进行的拷贝,以下代码会发生什么问题?例如:resize,reserve,insert,assign,push_back等。迭代器失效有两种情况。原创 2023-07-16 14:28:08 · 192 阅读 · 0 评论 -
list(模拟实现)
因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。以下为list中一些常见的重要接口。要模拟实现list,必须要熟悉list的底层结构以及其接口的含义,通过上面的学习,这些内容已基本掌握,现在我们来模拟实现list。原创 2023-07-16 22:54:29 · 311 阅读 · 0 评论 -
轻松学习string类常用接口(附模拟实现)
简介:C++string 是C++中的字符串。字符串对象是一种特殊类型的容器,专门设计来操作的字符序列。不像传统的c-strings,只是在数组中的一个字符序列,我们称之为字符数组,而C + +字符串对象属于一个类,这个类有很多内置的特点,在操作方式,更直观,另外还有很多有用的成员函数。string 的定义为:typedef basic_string string。原创 2022-11-22 19:37:08 · 618 阅读 · 0 评论 -
C++多态
多态的构成条件多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数虚函数:即被virtual修饰的类成员函数称为虚函数public:{cout原创 2022-11-22 19:57:30 · 479 阅读 · 0 评论 -
C++继承
定义格式下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。继承关系和访问限定符继承基类成员访问方式的变化类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员派生类的protected成员派生类的private成员基类的private成员。原创 2022-10-18 22:36:51 · 292 阅读 · 0 评论 -
模板(泛型编程)
模板是不能分离编译的,为什么?模板的T是未知的,是需要实例化的,也就是说,你写一个vector int传过去他才知道你要实例化为int,不然他是不会实例化的,只有实例化后才有地址,所以模板分离在链接的时候,因为没有实例化就会爆出错误,因为没有实例化就没有地址,根本链接不上解决方法1. 将声明和定义放到一个文件 "xxx.hpp" 里面或者xxx.h其实也是可以的。推荐使用这种。2. 模板定义的位置显式实例化。这种方法不实用,不推荐使用。原创 2023-07-12 22:22:20 · 239 阅读 · 0 评论 -
C++类和对象(下)
初始化列表,static成员,友元,内部类原创 2022-08-06 14:05:22 · 94 阅读 · 8 评论 -
C++类和对象(中)
空类 六个默认成员函数 构造函数,构造函数的特性,构造函数的实例,析构函数,析构函数的特性,拷贝构造函数,拷贝构造函数的特点,运算符重载,赋值运算符重载,前置++和后置++重载,日期类实现,const成员,取地址及const取地址操作符重载...原创 2022-07-26 20:16:13 · 88 阅读 · 9 评论 -
C++类和对象(上)
关于过程与对象的初步认识,类的引入,类的定义,类的两种定义方式,命名规则,类的访问限定符及封装,访问限定符的说明,C++中struct与class的区别,封装,类的作用域,计算类对象的大小,this指针,this指针的特性......原创 2022-07-19 22:58:45 · 322 阅读 · 12 评论 -
C++入门(二)
函数重载,内联函数,auto关键字,指针空值nullptr原创 2022-07-18 11:24:44 · 229 阅读 · 10 评论 -
C++入门(一)
C++关键字,命名空间,输入输出,缺省参数,引用原创 2022-07-11 21:53:56 · 341 阅读 · 8 评论