递归算法应该都不陌生,其实最开始遇见递归应该是在数学课上,类似于f(x)=f(x-1)+f(x+1),f(1)=1,f(2)=4,f(3)=3这种数学题大家应该见过不少,其实思想就是层层递归,最终将目标值用f(1),f(2),f(3)表示。之前做了一个需求,需要实现类似操作系统文件夹的功能,我们用MySQL数据库记录数据,表字段有4列,分别是id,index …
编程文章
它可能看起来并不重要,但我们必须了解它的工作方式,这样我们才能成为一个更好的程序员。在计算时间复杂度和空间复杂度(通常用 Big-O 表示法表示)时,这里需要遵循几个规则:忽略常数,例如 O(N + 2),我们可以认为它是 O(N)。忽略非显性项,例如 O(N^2 + N),我们可以将其视为 O(N^2)。时间复杂度时间复杂度是算法运行所花费的时间量,它是输 …
一、算法的时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函 …
QPainter在窗口上绘图的默认坐标系统如图所示,这是绘图设备的物理坐标。为了绘图的方便,QPainter提供了一些坐标变换的功能,通过平移、旋转等坐标变换,得到一个逻辑坐标 系统,使用逻辑坐标系统在某些时候绘图更方便。坐标变换函数如下。void translate(qreal dx, qreal dy) 坐标系统平移一定的偏移量,坐标原点平移到新的点vo …
数据模型所有的基于项数据(item data)的数据模型(Model)都是基于QAbstractltemModel类的,这个类定义了视图组件和代理存取数据的接口。数据无需存储在数据模型里,数据可以是其他类、 文件、数据库或任何数据源。Qt中与数据模型相关的几个主要的类的层次结构如图所示。图中的抽象类是不能直接使用的,需要由子类继承来实现一些纯虚函数。Qt提供 …
前面设计的两个对话框是以模态(Model)方式显示的,即用QDialog::exec()函数显示。模态 显示的对话框不允许鼠标再去单击其他窗口,直到对话框退出。使用QDialog::show(),则能以非模态(Modeless)方式显示对话框。非模态显示的对话框在显示后继续运行主程序,还可以在主窗口上操作,主窗口和非模态对话框之间可以交互控制,典型的例子是文 …
QPen用于绘图时对线条进行设置,主要包括线宽、颜色、线型等,下面是QPen类的主要接口函数。通常一个设置函数都有一个对应的读取函数,例如setColor()用于设置画笔颜色,对应的读取画笔颜色的函数为color(),这里仅列出设置函数(省略了函数参数中的const关键字)。void setColor(QColor &color):设置画笔颜色,即线条颜色v …
QTextStream与IO读写设备结合,为数据读写提供了一些方便的方法,QTextStream可以与QFile、QTemporaryFile、QBuffer、QTcpSocket和QUdpSocket 等IO设备类结合使用。QTextStream读取文本文件在本例中,将QFile和QTextStream结合,读取文本文件的自定义函数openTextBySt …
QMainWindow(1)QMainWindow是一个为用户提供窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bar)、多个铆接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。编辑菜单栏菜单栏 最多有一个QMenu …
从内存泄露开始?很简单的入门程序,应该比较熟悉吧 _#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){QApplication app(argc, argv);QLabel *label = new QLabel("Hello Db …
