《数据结构》--二叉树【下】 在节点结构中加入层号属性。结果容器由vector:res改为multimap:m。输出时,输出m.first和m.second即可将层号和节点值同时打印出来。最简单的方法就是在上面的基础上,输出m的最后一个元素的first属性值。在 二 的基础上,输出时,如果m.first == i,输出。二叉树满度也就是节点的度为2。也就是左右孩子都存在。分支节点是度不为0的节点。也就是有孩子节点存在。叶子节点是度为0的节点。也就是没有孩子节点。或者将代码改为:(插入时直接判断)
《数据结构》--二叉树【上】 树是一种数据结构,它是由n(n>=1)个有限节点组成的一个具有层次关系的集合。把它叫做"树"是因为它看起来像一颗倒挂着的树,也就是说它是根在上,叶在下的。本文包括:树的定义、特点、基本术语。二叉树的定义、性质、特殊二叉树。二叉树的遍历方法(非递归+递归),包括遍历算法的分析和编码实现。
QT界面开发【常用控件-按钮组】 在Qt中,常用的按钮类型有很多种,每种按钮都有其特定的用途和特点。本文着重讲解:QPushButton、QToolButton、QRadioButton、QCheckBox,文中还会涉及一些其他的按钮
我的创作纪念日 我依稀记得第一个比较完整的小型项目就是扫雷了,当时学完判断和循环,感觉也并没有很难,就是第一次参与项目的实战,有点不知所措,有很多东西考虑不到,bug频出,让人很恼火,但也确实有很多东西是在一次次的实战中才学习到的。在日常的学习过程中,我认为,面对新知识的时候,我们要保持敬畏,保持好奇的态度去学习。哈哈,没啥日常了,在校大学生嘛。我打算接下来,继续我的创作之旅,记录我的学习进度,记下学习的知识点。我觉得最好的一段代码应该就是在写算法题的时候,灵机一动,使用了C++的异常处理,将错误信息抛出从而获得了AC。
QT界面开发:图形化设计、资源文件添加 此时我们创建项目时就可以选择添加UI选项了。添加完之后,我们可以看到,文件中多出了一个存放界面文件的目录,下面有个.ui的界面文件。甚至pro的项目文件中也会添加一项内容。我们点击界面文件中的.ui文件,我们可以来到设计界面。设计界面的一套流程主要包括以下几个步骤:1.使用工具箱中的控件(如按钮、文本框、标签等)拖拽到主窗体上。2.通过属性编辑器调整控件的属性(如大小、字体、颜色等),3.使用布局管理器(如水平布局、垂直布局等来控制控件的排列与自适应行为)。
QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】 经过前面的铺垫,今天我们就开始我们图形化界面之旅了,我们的第一个窗体主要包括:菜单栏、状态栏、工具栏、铆接部件、还有Qt提供的一些主窗体的API。第一部分:主界面(QMainWindow)当创建好项目后,我们直接运行,看一下运行结果:你会发现,这个界面是小小的一坨,看起来一点也不舒服,那我们就可以使用resize()方法来更改界面尺寸。代码如下:MainWindow::MainWindow(QWidget *parent) : QMain
Qt界面开发(对象树概念、信号与槽机制) 我们不止能对Qt提供的组件进行信号与槽链接,我们也能自定义一个类,让自定义类的一些信号与槽与Qt提供的标准组件的信号与槽进行关联,也能使两个自定义类的信号与槽进行关联。我们就以后者进行说明:现在定义一个teacher类和student类,teacher对象作为信号发出者:下课了信号,student对象作为信号的接收者,槽处理行为是:吃饭去。下面我们开始添加两个类:弹出需要添加的文件类型:添加自定义类Class此时你必须输入类名以及可以选择性的选择继承的基类。头文件和源文件都会自动帮你起名字的。
【C++11入门】新特性总结之移动语义(右值、右值引用、std::move()...) C++11新特性:深浅拷贝、左值右值、右值引用、移动语义、万能引用(转发引用)、引用折叠、完美转发。你想知道什么?一篇解决你的所有疑惑。
【C++11入门】新特性总结之lambda表达式 现代C++语言的核心特征之一:lambda表达式。虽然其它编程语言早已具备了这种特性,但直到C++11标准发布,C++11才具备了lambda表达式。本节主要讲解lambda表达式的语法和使用方法。具体包括:捕获列表、可选参数列表、可选异常说明符、可选返回值类型等。此外,还将介绍lambda表达式在STL算法中的应用和泛型lambda表达式的使用方法。
输入输出--I/O流【C++提升】 C++ 提供了多种方式来控制输出格式。你可以使用格式化标志和流操作符来改变输出格式。#include // 用于 std::setprecision 和 std::fixed// 输出 123.46return 0;
【C++11入门】新特性总结之智能指针 在C++中,智能指针是用于管理动态分配内存的对象,这些对象能够自动处理内存的释放,从而减少内存泄露的风险。C++11主要引入了三种主要的智能指针:std::unique_ptr, std::share_ptr, std::weak_ptr。下面我们一一介绍。
【C++11入门】新特性总结大全-Part1 C++11标准公布后,C++社群中出现了久违的热情,有人甚至叫出“C++的复兴”。指望C++重回20世纪90年代中期那样的地位显然是昧于大势的期望,但是C++经历了这么多年的打磨与起伏,在各领域的地位已经非常稳固了。2011年新标准的出现能够大大提升C++开发的效率和质量。时至今日,能够基本了解C++11标准的程序员恐怕不多,而能够以新的C++风格开发实践的人更是凤毛麟角。因此,接下来几节,我们将盘点C++11的新特性。作为开幕第一篇,我们先说一些我们之前用到的但是你不知道是C++11标准的新特性。
《数据结构》--队列【各种实现,算法推荐】 队列是一种常见的数据结构,按照先进先出(FIFO,First In First Out)的原则排列数据。也就是说,最早进入队列的元素最先被移除。:将元素添加到队列的尾部。:从队列的头部移除并返回元素。:初始化一个空队列。:返回但不移除队列的头部元素(通常称为“peek”或“front”)。:检查队列中是否还有元素。:返回队列中元素的数量。
《数据结构》--栈【概念应用、图文并茂】 线性表的学习体系,栈(Stack-LIFO)的概念,顺序栈与链栈,单调栈专题,共享栈专题,栈的算法应用:递归专题,四则运算表达式专题(前缀表达式、后缀表达式、中缀表达式),逆波兰表达式的题解。
异常处理【C++提升】(基本思想,重要概念,异常处理的函数机制、异常机制,栈解旋......你想要的全都有) 1)异常是一种程序控制机制,与函数机制独立和互补,函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为网捕条件,从而以类型匹配在栈机制中跳跃回馈.2)异常设计目的:栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向、有目的的控制传动,从一开始,异常就是冲着改变程序控制结构,以适应面向对象程序更有效地工作这个主题,而不是仅为了进行错误处理。