自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 C++智能指针

智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。

2020-09-10 11:05:27 252

原创 C++四种类型转换

在C语言中,C的强制转换表面上看起来功能强大,但是转化不够明确,不能进行错误检查,容易出错。因此C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符。

2020-08-23 14:04:10 469

原创 C++异常

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。异常对象定义好了,相比错误码的方式可以清晰准确的展示出错误的各种信息,甚至可以包含堆栈调用的信息,这样可以帮助更好的定位程序的bug

2020-08-23 02:04:20 374

原创 右值引用与lambda表达式

右值引用是C++11中引入的新特性,它实现了转义语义和精确传递。它的主要目的有两个方面:1.消除两个对象交互时不必要的对象拷贝,节省存储资源,提高效率。2.简洁明确的定义泛型函数。Lambda表达式定义一个匿名函数,并且可以捕获一定范围内的变量。

2020-08-23 01:24:05 766

原创 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 176

原创 位图与布隆过滤器

当面对海量的数据时,常见的数据结构与算法会浪费大量的时间与空间。为了更好的解决这一个问题,位图与布隆过滤器便应用而生。

2020-08-21 15:07:10 322

原创 哈希及unordered_map与unordered_set的底层实现

哈希表可提供对任何有名项的存取操作和删除操作。由于操作对象是有名项,所以哈希表也可以被视为一种字典结构,这种结构的用意在于提供常数时间的基本操作。

2020-08-21 00:02:25 5307

原创 红黑树及map与set的模拟实现

AVL-tree之外,另一个颇具历史并被广泛运用的平衡二叉搜素树是RB-tree(红黑树)。所谓RB-tree,不仅是一个二叉搜索树,而且其中一些条件,可以满足最长路径中节点个数不超过最短路径节点个数的两倍。

2020-08-18 22:26:20 810

原创 AVL树及其调整

AVL tree是一个”加上了额外平衡条件“的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(logN)。AVL树保证每个节点的左右子树高度差最多为1.这是一个较弱的概念,但是能够保证”对数深度“的平衡状态。

2020-08-18 14:07:46 779

原创 map与set的使用

set的特性是:所有元素都会根据元素的键值自动排序。set的元素不像map那样可以同时拥有实值和键值,set元素的键值就是实值,实值就是键值。set不允许有两个相同的键值。而与set唯一不同的是multiset可以拥有相同的键值。map的特性是,所有元素根据元素的键值被自动排序。map的所有元素都是pair,同时拥有实值和键值。而与map唯一不同的是multimap允许键值重复。

2020-08-09 13:31:07 312

原创 二叉搜索树

所谓二叉搜索树,可提供对数(logN)时间的元素插入与访问。二叉搜索树的节点放置规则是:任何节点的键值一定大于其左子树的每一节点的键值,并小于其右子树的每一个节点的键值。因此,二叉搜索树的中序遍历为数据的升序。

2020-08-05 18:47:21 247

原创 C++多态特性及原理

多态是面向对象三大特性之一。它是指在同一操作作用于不同的对象时,可以有不同的解释,并产生不同的执行结果。多态提高了代码的维护性(继承保证),提高了代码的扩展性(多态保证)。

2020-08-03 13:23:10 197

原创 C++继承与菱形继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。

2020-07-31 22:38:38 176

原创 非类型模板参数与类模板

模板在实际中应用非常广泛,C++STL底层用了大量模板来适配各种情形。模板在实际开发中,大大提高了效率,以便于更快的迭代开发。

2020-07-27 12:51:38 1069

原创 STL之priority_queue及其底层实现

priority_queue是一个具有权值观念的queue,它允许加入元素,移除旧元素,审视元素值等功能。由于这是一个queue,所以只允许在低端插入数据,并从顶端取出元素,初次之外别无其它途径存取元素。

2020-07-25 01:46:03 3649

原创 STL之queue及其底层实现

queue是一种先进先出(FIFO)的数据结构。queue允许新增元素、移除元素、在尾部插入元素以及取得顶端元素。除了最顶端可以取出元素之外,没有方法取出其他元素,所有queue不允许有遍历行为。

2020-07-24 00:02:54 7067 3

原创 STL之stack及其底层实现

stack是一种先进后出(FILO)的数据结构。它只有一个出口。stack允许新增元素,移除元素,取得最顶端元素。它在括号匹配,逆波兰表达式等问题中有着广泛的运用。

2020-07-23 23:03:14 4037

原创 STL之list及其底层实现

相较于vector的连续线性空间,list要复杂许多,它相当于带头节点的双向循环链表,对于任何位置的元素插入或元素移除,list永远是常数时间。因此,list对于空间的运用有绝对的精准。

2020-07-20 22:14:39 1120

原创 STL之vector及其底层实现

vector相当于一个动态数组,随着元素的加入,它的内部机制会自行扩充空间以容纳元素。因此,vector的运用对于内存的合理运用与运用的灵活性有很大的帮助。

2020-07-18 21:43:59 1048 1

原创 函数模板与类模板?看这就够了

在C++中,如果我们需要使用两个数据类型不同swap函数,一般思路是写两个函数出来。那能不能一劳永逸呢?C++模板就巧妙解决了这个问题。

2020-04-30 17:25:30 186

原创 关于C/C++内存管理,你该知道这些

在计算机系统中,尤其在嵌入式中,内存资源非常有限。因此对于一个C/C++程序员来说,如何有效地管理内存是在程序设计中首要考虑的问题。

2020-04-27 18:07:47 218

原创 C++类与对象

本文介绍了C++构造函数初始化列表,static成员,友元,内部类,C++11新成员初始化方式以及它们的使用方式。

2020-04-25 17:41:33 140

原创 类的6个默认成员函数

C++类有6个默认成员函数,即不需要自己实现编译器也可自己调用。那么它们分别是哪6个默认成员函数以及在什么情况下需要自己来实现呢?请带着这些问题,从本文中寻找答案吧!

2020-04-19 23:29:06 252

原创 C++类与this指针

本文首先引入C++中类的概念,并借助类的概念来介绍类中隐含的this指针。

2020-04-01 20:29:06 249

原创 C++函数重载

本文主要介绍为什么C++支持重载,以及C与C++编译器在代码执行过程中的处理比较。

2020-03-30 14:48:31 275

原创 数据结构之算法的时间与空间复杂度

本文主要介绍算法的时间与空间复杂度的基本概念以及相关习题的练习。

2020-03-26 15:52:06 493

原创 数据结构之排序总结

本文主要介绍八大排序算法及思想。包含直接插入/希尔/堆排序/选择排序/冒泡排序/快速排序(3种版本)/计数排序。附带代码(C语言)实现以及性能比较测试。

2020-03-26 00:15:14 221

原创 数据结构之树与二叉树

本文主要介绍数据结构中树与二叉树的基本概念以及相关代码(C语言版)。附加二叉树在线OJ习题的练习与讲解。

2020-03-22 19:23:31 461

原创 数据结构线性表之栈与队列

本文主要介绍线性表下的栈与队列的基本概念以及相关代码(C语言版)。附加栈与队列在线OJ习题的练习。

2020-02-28 23:54:10 510

原创 数据结构线性表之顺序表与链表

本文主要介绍数据结构、线性表以及线性表下的顺序表与链表的基本概念以及相关代码(C语言版)。附加顺序表与链表在线OJ习题的练习。

2020-02-25 17:17:24 850

原创 Linux发展史及常用基本指令

Linux发展史及常用基本指令什么是Linux?  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它是一种自由和开放源代码的类UNIX操作系统,...

2019-12-24 22:54:19 170

原创 数据在内存中的存储方式

通过对本文的阅读你将会了解到:1.为什么计算机是二进制存储;2.整形存储方式;3.浮点型在内存中的存储。以及相关习题的练习。

2019-10-18 21:54:33 1229

原创 扫雷游戏C语言实现

用C语言实现扫雷小游戏要求:1.第一次扫雷,不炸死。2.坐标周围没雷,可以实现展开。首先,跟游戏三子棋的格式一致。需要创立一个game.h的头文件,以及game.c的源文件,还有包括主函数的test.c文件。1.创建菜单栏与三子棋游戏1,2 顺序完全一致,只有名字有所改动而已,因此不做赘述。(在此附上三子棋链接)https://blog.csdn.net/fjhugjkdsd/art...

2019-09-22 13:05:24 598 1

原创 操作符的妙用

操作符在C语言中的妙用操作符在C语言有着极其重要的地位,比如我们常用的加减乘除以及取模运算等。但其实操作符远远不止这些,主要归为以下几类:算术操作符移位操作符位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式下标引用以及函数调用和结构成员等其中主要的操作符优先级顺序如下:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最...

2019-09-21 20:48:22 197

原创 三子棋的C语言实现

用C语言实现三子棋代码今天来用c语言代码实现三子期游戏。首先,完成该游戏需要创立一个game.h的头文件,以及game.c的源文件,还有包括主函数的测试test.c文件,这也是所有游戏的基本格式。具体步骤如下:1.创建菜单栏void Menu(){ printf("**************************\n"); printf("****欢迎来到三子棋游戏****\n...

2019-09-20 23:48:39 187

原创 聊聊关于C语言(VS软件)中的栈保护机制

关于C语言(VS)中的栈保护机制栈保护机制(VS软件)是为了防止栈溢出而专门设计的一种保护机制。在初始化多个变量,或者初始化数组之后,计算机在栈中开辟内存时,一般会留出“缓冲区”,来降低利用栈溢出漏洞的可能性。下面我们来看一个非常经典的案例(操作软件VS2013 Debug版本状态下):#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h...

2019-09-18 17:01:38 828

原创 向着梦想前进,前进,前,进,进——我的编程之路

向着梦想前进,前进,前,进,进——我的编程之路我叫张凯,来自西安工程大学,是一名数学专业的大三理工男。在上大学之前,我每天都沉溺于数理化中的海洋中不能自拔,也没时间去玩电脑,碰电脑。因此我从来不知道什么叫office,更不知道C/C++,Java,python 这些神奇的编程语言。直到大一学了C语言编程之后,我颇有一种“放虎归山,放蛟龙入海”的感觉。从那之后,我对编程产生了浓厚的兴趣,每次看到代...

2019-09-07 09:24:53 310

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除