- 博客(36)
- 收藏
- 关注
原创 C++智能指针
智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。
2020-09-10 11:05:27
323
原创 C++四种类型转换
在C语言中,C的强制转换表面上看起来功能强大,但是转化不够明确,不能进行错误检查,容易出错。因此C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符。
2020-08-23 14:04:10
541
原创 C++异常
异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。异常对象定义好了,相比错误码的方式可以清晰准确的展示出错误的各种信息,甚至可以包含堆栈调用的信息,这样可以帮助更好的定位程序的bug
2020-08-23 02:04:20
760
原创 右值引用与lambda表达式
右值引用是C++11中引入的新特性,它实现了转义语义和精确传递。它的主要目的有两个方面:1.消除两个对象交互时不必要的对象拷贝,节省存储资源,提高效率。2.简洁明确的定义泛型函数。Lambda表达式定义一个匿名函数,并且可以捕获一定范围内的变量。
2020-08-23 01:24:05
934
原创 C++11新特性(部分)
C++11标准由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布,并于2011年9月出版。此次标准为C++98发布后13年来第一次重大修正。相比较而言。C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率
2020-08-21 22:29:08
211
原创 哈希及unordered_map与unordered_set的底层实现
哈希表可提供对任何有名项的存取操作和删除操作。由于操作对象是有名项,所以哈希表也可以被视为一种字典结构,这种结构的用意在于提供常数时间的基本操作。
2020-08-21 00:02:25
6302
原创 红黑树及map与set的模拟实现
AVL-tree之外,另一个颇具历史并被广泛运用的平衡二叉搜素树是RB-tree(红黑树)。所谓RB-tree,不仅是一个二叉搜索树,而且其中一些条件,可以满足最长路径中节点个数不超过最短路径节点个数的两倍。
2020-08-18 22:26:20
890
原创 AVL树及其调整
AVL tree是一个”加上了额外平衡条件“的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(logN)。AVL树保证每个节点的左右子树高度差最多为1.这是一个较弱的概念,但是能够保证”对数深度“的平衡状态。
2020-08-18 14:07:46
852
原创 map与set的使用
set的特性是:所有元素都会根据元素的键值自动排序。set的元素不像map那样可以同时拥有实值和键值,set元素的键值就是实值,实值就是键值。set不允许有两个相同的键值。而与set唯一不同的是multiset可以拥有相同的键值。map的特性是,所有元素根据元素的键值被自动排序。map的所有元素都是pair,同时拥有实值和键值。而与map唯一不同的是multimap允许键值重复。
2020-08-09 13:31:07
370
原创 二叉搜索树
所谓二叉搜索树,可提供对数(logN)时间的元素插入与访问。二叉搜索树的节点放置规则是:任何节点的键值一定大于其左子树的每一节点的键值,并小于其右子树的每一个节点的键值。因此,二叉搜索树的中序遍历为数据的升序。
2020-08-05 18:47:21
311
原创 C++多态特性及原理
多态是面向对象三大特性之一。它是指在同一操作作用于不同的对象时,可以有不同的解释,并产生不同的执行结果。多态提高了代码的维护性(继承保证),提高了代码的扩展性(多态保证)。
2020-08-03 13:23:10
253
原创 C++继承与菱形继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。
2020-07-31 22:38:38
209
原创 非类型模板参数与类模板
模板在实际中应用非常广泛,C++STL底层用了大量模板来适配各种情形。模板在实际开发中,大大提高了效率,以便于更快的迭代开发。
2020-07-27 12:51:38
1184
原创 STL之priority_queue及其底层实现
priority_queue是一个具有权值观念的queue,它允许加入元素,移除旧元素,审视元素值等功能。由于这是一个queue,所以只允许在低端插入数据,并从顶端取出元素,初次之外别无其它途径存取元素。
2020-07-25 01:46:03
4433
原创 STL之queue及其底层实现
queue是一种先进先出(FIFO)的数据结构。queue允许新增元素、移除元素、在尾部插入元素以及取得顶端元素。除了最顶端可以取出元素之外,没有方法取出其他元素,所有queue不允许有遍历行为。
2020-07-24 00:02:54
8214
3
原创 STL之stack及其底层实现
stack是一种先进后出(FILO)的数据结构。它只有一个出口。stack允许新增元素,移除元素,取得最顶端元素。它在括号匹配,逆波兰表达式等问题中有着广泛的运用。
2020-07-23 23:03:14
4670
原创 STL之list及其底层实现
相较于vector的连续线性空间,list要复杂许多,它相当于带头节点的双向循环链表,对于任何位置的元素插入或元素移除,list永远是常数时间。因此,list对于空间的运用有绝对的精准。
2020-07-20 22:14:39
1366
原创 STL之vector及其底层实现
vector相当于一个动态数组,随着元素的加入,它的内部机制会自行扩充空间以容纳元素。因此,vector的运用对于内存的合理运用与运用的灵活性有很大的帮助。
2020-07-18 21:43:59
1165
1
原创 函数模板与类模板?看这就够了
在C++中,如果我们需要使用两个数据类型不同swap函数,一般思路是写两个函数出来。那能不能一劳永逸呢?C++模板就巧妙解决了这个问题。
2020-04-30 17:25:30
217
原创 关于C/C++内存管理,你该知道这些
在计算机系统中,尤其在嵌入式中,内存资源非常有限。因此对于一个C/C++程序员来说,如何有效地管理内存是在程序设计中首要考虑的问题。
2020-04-27 18:07:47
245
原创 类的6个默认成员函数
C++类有6个默认成员函数,即不需要自己实现编译器也可自己调用。那么它们分别是哪6个默认成员函数以及在什么情况下需要自己来实现呢?请带着这些问题,从本文中寻找答案吧!
2020-04-19 23:29:06
313
原创 数据结构之排序总结
本文主要介绍八大排序算法及思想。包含直接插入/希尔/堆排序/选择排序/冒泡排序/快速排序(3种版本)/计数排序。附带代码(C语言)实现以及性能比较测试。
2020-03-26 00:15:14
281
原创 数据结构线性表之顺序表与链表
本文主要介绍数据结构、线性表以及线性表下的顺序表与链表的基本概念以及相关代码(C语言版)。附加顺序表与链表在线OJ习题的练习。
2020-02-25 17:17:24
932
原创 Linux发展史及常用基本指令
Linux发展史及常用基本指令什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它是一种自由和开放源代码的类UNIX操作系统,...
2019-12-24 22:54:19
190
原创 数据在内存中的存储方式
通过对本文的阅读你将会了解到:1.为什么计算机是二进制存储;2.整形存储方式;3.浮点型在内存中的存储。以及相关习题的练习。
2019-10-18 21:54:33
1334
原创 扫雷游戏C语言实现
用C语言实现扫雷小游戏要求:1.第一次扫雷,不炸死。2.坐标周围没雷,可以实现展开。首先,跟游戏三子棋的格式一致。需要创立一个game.h的头文件,以及game.c的源文件,还有包括主函数的test.c文件。1.创建菜单栏与三子棋游戏1,2 顺序完全一致,只有名字有所改动而已,因此不做赘述。(在此附上三子棋链接)https://blog.youkuaiyun.com/fjhugjkdsd/art...
2019-09-22 13:05:24
706
1
原创 操作符的妙用
操作符在C语言中的妙用操作符在C语言有着极其重要的地位,比如我们常用的加减乘除以及取模运算等。但其实操作符远远不止这些,主要归为以下几类:算术操作符移位操作符位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式下标引用以及函数调用和结构成员等其中主要的操作符优先级顺序如下:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最...
2019-09-21 20:48:22
236
原创 三子棋的C语言实现
用C语言实现三子棋代码今天来用c语言代码实现三子期游戏。首先,完成该游戏需要创立一个game.h的头文件,以及game.c的源文件,还有包括主函数的测试test.c文件,这也是所有游戏的基本格式。具体步骤如下:1.创建菜单栏void Menu(){ printf("**************************\n"); printf("****欢迎来到三子棋游戏****\n...
2019-09-20 23:48:39
218
原创 聊聊关于C语言(VS软件)中的栈保护机制
关于C语言(VS)中的栈保护机制栈保护机制(VS软件)是为了防止栈溢出而专门设计的一种保护机制。在初始化多个变量,或者初始化数组之后,计算机在栈中开辟内存时,一般会留出“缓冲区”,来降低利用栈溢出漏洞的可能性。下面我们来看一个非常经典的案例(操作软件VS2013 Debug版本状态下):#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h...
2019-09-18 17:01:38
909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人