C++
Ghost__s
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
malloc ,calloc 和 realloc之间的区别?
相同点:都是C语言从堆中申请内存,申请成功的空间必须释放 在使用时,返回类型都是void*,在使用时必须进行强制类型转化 如果申请失败,返回NULL,在使用时必须判空不同点:malloc:void* malloc (size_t size);说明:向系统申请size字节的内存,成功返回所申请的内存(块)的起始地址,失败返回NULL。 ...原创 2019-07-11 22:56:38 · 257 阅读 · 0 评论 -
C++动态内存管理
C语言中,动态内存的管理一般用malloc,calloc,realloc和free这几个函数,他们之间的区别和联系在之前的博客中已经总结过了。C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出 了自己的内存管理方式:通过new和delete操作符进行动态内存管理。malloc/freemalloc:用来申请类类型对象空间,对自定义类型...原创 2019-07-11 23:31:53 · 246 阅读 · 0 评论 -
优先级队列——priority_queue
1、什么是优先级队列? 顾名思义就是带有优先级的队列,既然是队列,就只能再一端插入,在另一端提取元素,优先级体现在,随便插入元素,他会自动按照大或者这小的顺序进行排序。2、用什么结构来实现它呢? 如果我们用普通的数组,那么入队时很简单直接随便放入数组,只需要O(1)的时间,然而在出队时要挑选最大的那个优先级,则需要O(n)的时间。同样如果是...原创 2019-08-03 17:48:23 · 308 阅读 · 0 评论 -
泛型编程之模板
1、模板是什么?顾名思义,模板就像是一个模具一样,你给他什么原材料,他最终都形成一个东西,只是里面的材料不同。对比到我们的学 习中就是,把具有某一类特定规律的算法抽象出来,形成一个模板,用的时候你就很方便,根据需要传不同类型的数据都可以。2、模板的分类 模板分为函数模板 和 类模板<函数模板> 1、函数模板 :函数模板代表了一个函数家族,该...原创 2019-08-03 20:14:20 · 254 阅读 · 0 评论 -
C++三大特性之继承
继承的本质:代码复用(类级别的)1、什么是继承?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。2、 继承的定义类似下面这种格式,我们把Student叫做派生类,public叫做继承方法,People叫做基类class Student:public People...原创 2019-08-04 00:16:06 · 282 阅读 · 0 评论 -
浅谈智能指针
1、为什么要使用智能指针? C++的内存管理是让很多人头疼的事,一不小心就会发生内存泄漏,重复释放,野指针等问题。大部分关于指针的问题都是来源于堆空间,为什么呢?我们知道栈上的空间是由系统维护的,申请和释放的工作都是由系统根据栈的性质来完成的,不需要我们过多干预。而堆上空间的申请(new)和释放(delete)都必须由程序员显示的调用,并且很重要的一点,这段空间的生命周期就在n...原创 2019-08-04 20:23:41 · 408 阅读 · 0 评论 -
Vector容器的原理和模拟实现
原理:vector是STL的常见容器之一,vector是表示可变大小数组的序列容器。vector采用的连续存储空间来存储元素。因此,它可以像数组一样用下标对元素进行操作,但它与数组最大的不同就是,它的大小可以改变,并且是自主控制容量的变化。比数组高效很多。 vector的使用#include <vector>#include <iostream>...原创 2019-08-01 10:26:06 · 735 阅读 · 0 评论 -
STL:List模拟实现
原理:list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。优点:任意位置的插入删除效率很高(双向迭代)缺点:任意位置的随机访问效率很低list的使用#include <iostream>#include <list>void test1(){ std::list<int&...原创 2019-08-01 10:39:39 · 509 阅读 · 0 评论 -
shared_ptr的循环引用问题
struct ListNode{ int _data; shared_ptr<ListNode> _prev; shared_ptr<ListNode> _next; ~ListNode(){ cout << "~ListNode()" << endl; }};int main(){ shared_p...原创 2019-08-06 12:19:26 · 402 阅读 · 0 评论 -
二叉搜索树
什么是二叉搜索树? 二叉搜索树又叫二叉排序树,空树是特殊的二叉搜索树。若左子树不为空,那么左子树节点上的值都小于根节点的值;若右子树不为空,那么右子树上所有节点的值都大于根节点的值;左右子树也是二叉搜索树。二叉搜索树的性能分析 对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数...原创 2019-08-08 18:31:31 · 419 阅读 · 0 评论 -
平衡二叉搜索树之AVL tree
什么是平衡二叉搜索树? 平衡二叉搜索树就是为了弥补二叉树的缺陷,避免深度过深导致查找效率降低。判定一个树是否是平衡树,没有一个绝对的标准,平衡的意思其实就是避免深度过深,但是不同的平衡条件,实现复杂度不同,查找效率也有一些差别。常见的平衡二 叉树有:AVL-tree RB-tree。它们都比一般的二叉搜索树复杂一些,所以插入,和删除节点的平均时间较长,但它们可以解决极端不平衡...原创 2019-08-08 20:45:13 · 339 阅读 · 0 评论
分享