自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 QObject派生类中使用tr()翻译无效的问题

QT tr() 翻译无效 Q_OBJECT

2022-12-03 09:40:56 109

原创 QFont-使用外部字体文件的问题

QFont 字体文件 reslove QPainter

2022-11-28 14:43:50 582

原创 C++模板-- 从类成员函数推导出类类型

C++模板-- 从类成员函数推导出类类型

2022-11-08 10:10:59 165

原创 bat: %~d0 %cd% %~dp0

bat: %~d0 %cd% %~dp0

2022-10-19 17:22:15 116

转载 CPU是如何与内存交互的?

CPU和内存交互

2022-10-15 16:50:30 530

原创 Qt中和DPI相关的几个术语解释(来自Qt文档)

Qt中和DPI相关的几个术语解释(来自Qt文档)

2022-10-15 14:21:11 442

原创 SendMessage发送WM_KEYDOWN/WM_KEYUP消息

SendMessage 按键消息

2022-09-28 09:45:30 448

原创 Qt5在VS中调试时查看变量只能看到p,d指针的问题处理

Qt5在VS中调试时查看变量只能看到p,d指针的问题处理

2022-07-04 18:12:14 306

转载 VS2019+Qt5.15.2 编译 QtWebEngine(带MP4解码)

编译准备 下载源码:从https://download.qt.io/下载qt5.15.2版本源码。或者安装QT时选择带源码安装。个人比较喜欢原汁原味的下载。 看个人喜好选择从哪个圈下。 个人Index of /official_releases/qt/5.15/5.15.2/single 下的源码。 编译软件环境:Python 2.7(这么多年过去python3不支持挺蛋疼的)。Visual 2019(喜欢用其它版本也可以,出错自己想办法解决咯。组件能装多少就装多少)Perl 建..

2022-05-26 10:55:58 682

转载 QT中使用DBUS

D-Bus和QT本文以一个实作为例,介绍D-Bus在QT下的绑定。在实作中,我们会在Session Bus上注册一个HotelService,通过这个Service,可以实现check in,check out以及query的动作。为避免歧义,本文对D-Bus中的一些关键术语的表述依然采用英文。这些术语包括:D-Bus, IPC, Message,Message Bus, System Bus, Session Bus, Service, Object, Method, Signal, In..

2022-05-13 09:02:33 457

原创 打开文件夹并选定指定的文件

Windows下:explorer /select,E:\\file.txtLinux下(通过Dbus):参考网址:freedesktop.org QDBusConnection bus = QDBusConnection::sessionBus(); QDBusInterface dbus_iface("org.freedesktop.FileManager1", "/org/freedesktop/File.

2022-05-12 19:15:15 229

原创 QPainter绘制文本时自动换行

很简单,调用QPainter::drawText()时,传入Qt::TextWordWrap标志即可 !截取一点Qt的文档:void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)The flags argument is a bitwise OR of the following flags:Qt::Al

2022-05-11 17:43:13 1431

原创 Linux(Ubuntu)上给指定类型文件加上右键打开程序列表

首先需要为程序创建一个.desktop文件 (此步骤自行度娘!~)使用Exec=命令 %U添加,%U作用是传递多个URL,本地文件可以作为文件URL或作为文件路径传递。具体以pluma举例子:文件:/usr/share/applications/pluma.desktop,里面的字段Exec=pluma %U,MimeType=text/plain;表示text/plain类型的文件默认右键“打开方式”有pluma应用。如果修改Exec=pluma,则新打开的text/plain类型的文件默认右

2022-05-11 15:19:23 433

原创 QT编写跨平台代码注意事项

1.注意大小写(文件名,路径,控件提升名称等)2.路径使用正斜杠,不使用反斜杠对于平台特定要求,使用QDir::toNativeSeparators()进行转换3.不在自定义的命名空间里面使用Q_DELCARE_METATYPEnamespace myspace{ struct stru{ int x; } Q_DELCARE_METATYPE(myspace::stru) //BAD!!!!}Q_DELCARE_METATYPE(myspace::stru) //GOOD!!!!

2022-03-02 14:30:51 476 1

原创 GCC下设置调试信息级别

gcc的-g选项可以在编译时生成调试信息,便于调试器对程序进行调试。通过分离程序,可以把调试信息从模块中分离出来形成单独的调试信息文件,类似于VS的pdb文件。gcc的调试信息可以设置生成级别,对应的参数为-glevel. level可以为0,1,2,3,级别越高,体积越大。Level0:0不生成调试信息Level1:只生成最小调试信息,不包含局部变量的调试信息Level2:则会生成比较多的调试信息,但是对应的文件体积会比级别1大很多。 默认值为2Level3:会生成扩展...

2022-02-26 16:54:03 874

原创 Invalid parameter passed to C runtime function.

最近调试程序时,发现信息面板不停地打印如下信息:Invalid parameter passed to C runtime function.Invalid parameter passed to C runtime function.Invalid parameter passed to C runtime function.Invalid parameter passed to C runtime function.Invalid parameter passed to C runtime

2022-02-09 15:54:44 516

原创 天杀的QNetworkRequest终于加入超时机制了

QT总算是良心发现,从5.15版本开始支持了QNetworkRequest的超时设置,再也不用自己造轮子了!void QNetworkRequest::setTransferTimeout(int timeout = DefaultTransferTimeoutConstant)Sets timeout as the transfer timeout in milliseconds.Transfers are aborted if no bytes are transferred bef.

2022-01-26 14:08:16 1116 2

原创 不是所有的token在宏定义中都可以使用##连接

我定义了下面几个宏:#define CONNAT(a, b) CONNAT_IMPL(a, b)#define CONNAT_IMPL(a, b) a##b#define STR(s) STR_IMPL(s)#define STR_IMPL(s) #s然后再代码中使用:std::string str = STR(CONNAT(/home/boy/, zz));我的本意是想得到一个字符串"/home/boy/zz"但是GCC编译器给出了编译错误:error: pasting

2022-01-13 14:26:31 333

原创 Linux下GCC/G++编译出来的可执行程序无法双击运行

查看可执行文件,发现文件属性是shared library,而不是executable,导致这种情况的原因就是g++默认使用了-fpie参数。什么是pie?PIE(position-independent executable)是一种生成地址无关可执行程序的技术。如果编译器在生成可执行程序的过程中使用了PIE,那么当可执行程序被加载到内存中时其加载地址存在不可预知性。PIE还有个孪生兄弟PIC(position-independent code)。其作用和PIE相同,都是使被编译后的程序能够随

2021-12-09 18:44:06 1508

原创 Qt隐式共享机制带来的陷阱

为了提升性能,Qt框架里面使用了隐式共享技术(基于d-p模式),也可以理解为写时复制技术(COW)。在开发过程中我们一般不需要去关系隐式共享的底层运行机制,但是了解一下还是有必要的。 关于隐式共享,网上有很多相关介绍的文章,这里就不多赘述。写这篇文章的目的,只是记录一下这几天在项目上因隐式共享造成的一个BUG。相较于文档之类的理论只是,结合实际项目中的问题来理解隐式共享,可能会有更深的体会。 先看一下以下代码: //定义一个Data数据结构,包含一个成员x s...

2021-12-06 11:26:15 162

原创 一个点绕另一个点旋转之后的坐标计算

假设对坐标系上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式:x0= (x - rx0)*cos(a)- (y - ry0)*sin(a) + rx0 ; y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;

2021-11-01 19:55:57 2584

原创 Qt快捷键字符串映射表

Qt快捷键 映射"Esc",/*Qt::Key_Escape 0x01000000 */"Tab",/*Qt::Key_Tab 0x01000001 */"Shift+Tab",/*Qt::Key_Backtab 0x01000002 */"BackSpace",/*Qt::Key_Backspace 0x01000003 */"Return",/*Qt::Key_Return 0x01000004 */"Enter",/*Qt::Key_Enter 0x01000005 T

2021-10-28 17:52:03 515

原创 QFormLayout的坑

需要使用QFormLayout实现一个很简单的布局:在一个QFrame里面使用QFormLayout布局,QFormLayout的filed是一个QProgressBar,程序运行后,前面的文本竟然看不到...........调试QFormLayout的布局逻辑代码,发现QFromLayout布局一行时,会先计算label和filed的sizeHint,并根据sizeHint来决定label和field的position和size。上面文本看不到的原因是因为QProgressBar的默.

2021-10-28 11:58:12 163

原创 QObject::tr()

QT开发过程中,QObject::tr()用得比较多,尤其是需要做多语言翻译时。譬如:QtGuiApplication1::QtGuiApplication1(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); ui.pushButton->setText(tr("你好"));} 如果程序安装了对应的翻译文件,那么pushButton的文本会自动替换为目标语言对应的翻译。上面这种调用应付一...

2021-10-26 15:51:03 884

原创 bat脚本自动生成SVN仓库版本信息头文件

@echo offset src_dir=%~dp0::svn updatefor /f "usebackq delims=" %%i in (`"svn info | findstr "Rev""`) do set Reversion=%%iset rev=%Reversion:~18%echo Last Changed Rev:%rev%echo #define SVN_REVISION %rev% > "%src_dir%/include/"svnversion.h

2021-09-28 17:18:56 211

原创 QT中创建一个带BOM的UTF8编码文件

void CreateUTF8WithBom(const QString& path){ QFile f(filePath); f.open(QIODevice::WriteOnly | QIODevice::Truncate); QTextStream ts(&srcFile); ts.setGenerateByteOrderMark(true); //这句是重点 ts.setCodec("UTF-8"); ts << .

2021-08-21 17:42:46 629

原创 QFileDialog如何选择多个目录

这是网上看的别人的实现思路,大概思路就是设置QFileDialog的listView或者treeView多选模式,再通过selectedFiles()获得选中项。QStringList GetMultiDirectory(){ QFileDialog fileDlg(this, tr("Select Directory"), ""); fileDlg.setFileMode(QFileDialog::DirectoryOnly); fileDlg.setOption(QFileDialo

2021-08-21 15:15:57 313

原创 QT插件机制中宏Q_PLUGIN_METADATA和Q_INTERFACES的作用

今天简单地了解了一下QT的插件机制,其实也没有什么可多说的,理论上说到底无非就是库的加载和函数地址的查找。但是QT对于插件机制的支持是建立在它独有的原对象系统基础之上,自然也有自己的一套插件实现规则,或者说是语法。一般来讲,照着QT给的文档和DEMO,很容易就能实现一个插件,这里面最主要的就是三个宏:Q_DECLARE_INTERFACEQ_PLUGIN_METADATAQ_INTERFACES那么,这三个宏到底在整个插件机制中到底起到一个以什么作用呢?Q_DECLAR...

2021-07-31 17:57:32 3740 2

原创 VS调试时监视/查看全局变量

VS全局变量 监视

2021-07-07 13:46:19 2611

原创 QWidget: isVisible() == !isHidden() 吗?

判断QWidget是否可见,调用isVisible()还是isHidden()?在写这篇文章之前,我一直以为是一样的,也就是:

2021-06-02 17:15:14 856

原创 关于VS下面C++的异常捕获

项目上为了应对程序异常崩溃的情况,加入了DUMP生成机制,也就是调用windows下的API SetUnhandledExceptionFilter()对未处理的异常安装了一个处理函数,在处理函数里面调用MiniDumpWriteDump()生成DUMP文件。这部分代码比较简单,但是在实际测试过程中,发现很多时候程序崩了之后并没有生成DUMP文件。在网上找了一些资料,有用的不多,当然也有很多大神的文档,譬如MattPietrek写的关于结构化异常的分析文章(链接:https://www.cn...

2021-05-22 09:42:33 405 2

原创 C++11之静态断言static_assert

static_assertstatic_assert是编译时期的断言static_assert的断言表达式的结果必须是在编译时期可以计算的表达式,即必须是常量表达式静态断言接收两个参数:断言表达式和警告信息#include <assert.h>template <typename t, typename u> int bit_copy(t& a, u& b) { static_assert(sizeof(b) == sizeof(a),.

2021-05-17 09:19:09 291

原创 Qt中的topLevelWidgets()到底是哪些widgets?

先看QT文档对topLevelWidgets()的描述:[static] QWidgetList QApplication::topLevelWidgets()Returns a list of the top-level widgets (windows) in the application.Note: Some of the top-level widgets may be hidden, for example a tooltip if no tooltip is currently sh

2021-05-17 09:15:48 1706

原创 QWidget::setGeometry()不生效问题解决方案

开发过程中经常碰到setGeometry()不生效的问题,发现只要在setGeometry()之前调用一下show()或者setVisible(true)就可以了!问题就出在setVisible(true)!!!setVisible()会判断当前控件的WA_WState_Created属性,意思就是看看控件是否已经创建了window,如果为没有创建,就调用create()方法创建一个window,坏就坏在这里!跟代码发现QT为控件创建新窗口时,会自动校正window的geometry,也就是说之前设

2021-05-17 09:12:21 3356

原创 QFileDialog记录上次打开位置

QFileDialog几个选择文件和文件夹的方法都有一个默认路径参数,如:QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)参数const QString &dir = QString()..

2021-05-17 09:10:15 1841

原创 QWidget窗口置顶闪烁问题

QWidget有窗口属性设置函数:void setWindowFlags(Qt::WindowFlags type)一般调用改函数即可让窗口置顶显示QWidget* pWidget = new QWidget();pWidget->setWindowFlags(pWidget->windowFlags() | Qt::WindowStaysOnTopHint)但是注意看setWindowFlags()函数的说明:Note: This function calls s

2021-05-17 08:57:14 1618 8

原创 QTextEdit设置文本样式

QTextEdit可以通过qss设置边框属性,但是由于QTextEdit本身显示的是一个HTML,所以不能像其他的控件直接使用qss对文本设置样式。看一个我们再QtDesigner中对一个QTextEdit进行文本编辑的例子:上图的HTML中有好几个标签都有样式,譬如<body>,<p>,<span>等,到底应该修改哪个标签的样式呢? 1.修改文本边距和行高<p style="margin-top:12px; margin-bott...

2021-05-17 08:52:29 2457

原创 使用QTemporaryFile判断目标路径是否可写

在判断一个目标路径是否可写时,QFileInfo的isWritable()并不好用,一般我们会基于QFile尝试在目标路径新建一个临时文件,通过判断文件是否创建成功间接判断目标路径是否可写。如果自己实现这个逻辑,需要做文件打开,关闭,删除等一系列的处理。我们可以借助QTemproryFile类实现同样的目的.bool IsDirWritable(const QString& dir){ QTemporaryFile testFile(dir+ "\\XXXXXX");

2021-05-17 08:47:00 119

原创 友元访问辅助类----限定类方法只能被指定类调用

/* 友元访问辅助类 */template<class T>class FriendAccess{ friend typename T; FriendAccess() {}};/* 示例:类A的方法f()限定只有类B可以访问:*/ class A(){ public: void f(FriendAccess<B>){} //限制了只有类B的实例可以访问 }; class B(){ public...

2021-05-15 11:27:03 84

原创 编译期判断某种特定类型是否具有指定方法

#define HAS_MEMBER(XXX) \template<typename T, typename... Args>\struct has_member_##XXX \{ \ template<typename U> static auto Check(int) \ -> decltype(std::declval<U>().XXX(std::declval<Args>()...), std::true_type()); \.

2021-05-08 16:42:39 148

支持MP4播放的QtWebEngineCore(5.15.2+vs2019)

本地测试可以正常播放腾讯视频等视频网页

2022-05-26

浅谈MS SPEEK SDK

非常好的了解MS SPEEK SDK的资料 适合初学者阅读

2010-05-09

数据结构算法与应用-c++描述(PDF格式)

数据结构算法与应用(PDF) 目 录 译者序 前言 第一部分 预备知识 第1章 C++程序设计 1 1.1 引言 1 1.2 函数与参数 2 1.2.1 传值参数 2 1.2.2 模板函数 3 1.2.3 引用参数 3 1.2.4 常量引用参数 4 1.2.5 返回值 4 1.2.6 递归函数 5 1.3 动态存储分配 9 1.3.1 操作符new 9 1.3.2 一维数组 9 1.3.3 异常处理 10 1.3.4 操作符delete 10 1.3.5 二维数组 10 1.4 类 13 1.4.1 类Currency 13 1.4.2 使用不同的描述方法 18 1.4.3 操作符重载 20 1.4.4 引发异常 22 1.4.5 友元和保护类成员 23 1.4.6 增加#ifndef, #define和#endif语句 24 1.5 测试与调试 24 1.5.1 什么是测试 24 1.5.2 设计测试数据 26 1.5.3 调试 28 1.6 参考及推荐读物 29 第2章 程序性能 30 2.1 引言 30 2.2 空间复杂性 31 2.2.1 空间复杂性的组成 31 2.2.2 举例 35 2.3 时间复杂性 37 2.3.1 时间复杂性的组成 37 2.3.2 操作计数 37 2.3.3 执行步数 44 2.4 渐进符号(O、 健?、 o) 55 2.4.1 大写O符号 56 2.4.2 椒?58 2.4.3 符号 59 2.4.4 小写o符号 60 2.4.5 特性 60 2.4.6 复杂性分析举例 61 2.5 实际复杂性 66 2.6 性能测量 68 2.6.1 选择实例的大小 69 2.6.2 设计测试数据 69 2.6.3 进行实验 69 2.7 参考及推荐读物 74 第二部分 数据结构 第3章 数据描述 75 3.1 引言 75 3.2 线性表 76 3.3 公式化描述 77 3.3.1 基本概念 77 3.3.2 异常类NoMem 79 3.3.3 操作 79 3.3.4 评价 83 3.4 链表描述 86 3.4.1 类ChainNode 和Chain 86 3.4.2 操作 88 3.4.3 扩充类Chain 91 3.4.4 链表遍历器类 92 3.4.5 循环链表 93 3.4.6 与公式化描述方法的比较 94 3.4.7 双向链表 95 3.4.8 小结 96 3.5 间接寻址 99 3.5.1 基本概念 99 3.5.2 操作 100 3.6 模拟指针 102 3.6.1 SimSpace的操作 103 3.6.2 采用模拟指针的链表 106 3.7 描述方法的比较 110 3.8 应用 111 3.8.1 箱子排序 111 3.8.2 基数排序 116 3.8.3 等价类 117 3.8.4 凸包 122 3.9 参考及推荐读物 127 第4章 数组和矩阵 128 4.1 数组 128 4.1.1 抽象数据类型 128 4.1.2 C++数组 129 4.1.3 行主映射和列主映射 129 4.1.4 类Array1D 131 4.1.5 类Array2D 133 4.2 矩阵 137 4.2.1 定义和操作 137 4.2.2 类Matrix 138 4.3 特殊矩阵 141 4.3.1 定义和应用 141 4.3.2 对角矩阵 143 4.3.3 三对角矩阵 144 4.3.4 三角矩阵 145 4.3.5 对称矩阵 146 4.4 稀疏矩阵 149 4.4.1 基本概念 149 4.4.2 数组描述 149 4.4.3 链表描述 154 第5章 堆栈 161 5.1 抽象数据类型 161 5.2 派生类和继承 162 5.3 公式化描述 163 5.3.1 Stack的效率 164 5.3.2 自定义Stack 164 5.4 链表描述 166 5.5 应用 169 5.5.1 括号匹配 169 5.5.2 汉诺塔 170 5.5.3 火车车厢重排 172 5.5.4 开关盒布线 176 5.5.5 离线等价类问题 178 5.5.6 迷宫老鼠 180 5.6 参考及推荐读物 188 第6章 队列 189 6.1 抽象数据类型 189 6.2 公式化描述 190 6.3 链表描述 194 6.4 应用 197 6.4.1 火车车厢重排 197 6.4.2 电路布线 201 6.4.3 识别图元 204 6.4.4 工厂仿真 206 6.5 参考及推荐读物 217 第7章 跳表和散列 218 7.1 字典 218 7.2 线性表描述 219 7.3 跳表描述 222 7.3.1 理想情况 222 7.3.2 插入和删除 223 7.3.3 级的分配 224 7.3.4 类SkipNode 224 7.3.5 类SkipList 225 7.3.6 复杂性 229 7.4 散列表描述 229 7.4.1 理想散列 229 7.4.2 线性开型寻址散列 230 7.4.3 链表散列 234 7.5 应用——文本压缩 238 7.5.1 LZW压缩 239 7.5.2 LZW压缩的实现 239 7.5.3 LZW解压缩 243 7.5.4 LZW解压缩的实现 243 7.6 参考及推荐读物 247 第8章 二叉树和其他树 248 8.1 树 248 8.2 二叉树 251 8.3 二叉树的特性 252 8.4 二叉树描述 253 8.4.1 公式化描述 253 8.4.2 链表描述 254 8.5 二叉树常用操作 256 8.6 二叉树遍历 256 8.7 抽象数据类型BinaryTree 259 8.8 类BinaryTree 260 8.9 抽象数据类型及类的扩充 263 8.9.1 输出 263 8.9.2 删除 264 8.9.3 计算高度 264 8.9.4 统计节点数 265 8.10 应用 265 8.10.1 设置信号放大器 265 8.10.2 在线等价类 268 8.11 参考及推荐读物 275 第9章 优先队列 276 9.1 引言 276 9.2 线性表 277 9.3 堆 278 9.3.1 定义 278 9.3.2 最大堆的插入 279 9.3.3 最大堆的删除 279 9.3.4 最大堆的初始化 280 9.3.5 类MaxHeap 281 9.4 左高树 285 9.4.1 高度与宽度优先的最大及最小 左高树 285 9.4.2 最大HBLT的插入 287 9.4.3 最大HBLT的删除 287 9.4.4 合并两棵最大HBLT 287 9.4.5 初始化最大HBLT 289 9.4.6 类MaxHBLT 289 9.5 应用 293 9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 10.3.3 构造函数、析构函数及Winner 函数 308 10.3.4 初始化赢者树 308 10.3.5 重新组织比赛 310 10.4 输者树 311 10.5 应用 312 10.5.1 用最先匹配法求解箱子装载 问题 312 10.5.2 用相邻匹配法求解箱子装载 问题 316 第11章 搜索树 319 11.1 二叉搜索树 320 11.1.1 基本概念 320 11.1.2 抽象数据类型BSTree和 IndexedBSTree 321 11.1.3 类BSTree 322 11.1.4 搜索 322 11.1.5 插入 323 11.1.6 删除 324 11.1.7 类DBSTree 326 11.1.8 二叉搜索树的高度 327 11.2 AVL树 328 11.2.1 基本概念 328 11.2.2 AVL树的高度 328 11.2.3 AVL树的描述 329 11.2.4 AVL搜索树的搜索 329 11.2.5 AVL搜索树的插入 329 11.2.6 AVL搜索树的删除 332 11.3 红-黑树 334 11.3.1 基本概念 334 11.3.2 红-黑树的描述 336 11.3.3 红-黑树的搜索 336 11.3.4 红-黑树的插入 336 11.3.5 红-黑树的删除 339 11.3.6 实现细节的考虑及复杂性分析 343 11.4 B-树 344 11.4.1 索引顺序访问方法 344 11.4.2 m 叉搜索树 345 11.4.3 m 序B-树 346 11.4.4 B-树的高度 347 11.4.5 B-树的搜索 348 11.4.6 B-树的插入 348 11.4.7 B-树的删除 350 11.4.8 节点结构 353 11.5 应用 354 11.5.1 直方图 354 11.5.2 用最优匹配法求解箱子装载 问题 357 11.5.3 交叉分布 359 11.6 参考及推荐读物 363 第12章 图 365 12.1 基本概念 365 12.2 应用 366 12.3 特性 368 12.4 抽象数据类型Graph和Digraph 370 12.5 无向图和有向图的描述 371 12.5.1 邻接矩阵 371 12.5.2 邻接压缩表 373 12.5.3 邻接链表 374 12.6 网络描述 375 12.7 类定义 376 12.7.1 不同的类 376 12.7.2 邻接矩阵类 377 12.7.3 扩充Chain类 380 12.7.4 类LinkedBase 381 12.7.5 链接类 382 12.8 图的遍历 386 12.8.1 基本概念 386 12.8.2 邻接矩阵的遍历函数 387 12.8.3 邻接链表的遍历函数 388 12.9 语言特性 389 12.9.1 虚函数和多态性 389 12.9.2 纯虚函数和抽象类 391 12.9.3 虚基类 391 12.9.4 抽象类和抽象数据类型 393 12.10 图的搜索算法 394 12.10.1 宽度优先搜索 394 12.10.2 类Network 395 12.10.3 BFS的实现 395 12.10.4 BFS的复杂性分析 396 12.10.5 深度优先搜索 397 12.11 应用 399 12.11.1 寻找路径 399 12.11.2 连通图及其构件 400 12.11.3 生成树 402 第三部分 算法设计方法 第13章 贪婪算法 405 13.1 最优化问题 405 13.2 算法思想 406 13.3 应用 409 13.3.1 货箱装船 409 13.3.2 0/1背包问题 410 13.3.3 拓扑排序 412 13.3.4 二分覆盖 415 13.3.5 单源最短路径 421 13.3.6 最小耗费生成树 424 13.4 参考及推荐读物 433 第14章 分而治之算法 434 14.1 算法思想 434 14.2 应用 440 14.2.1 残缺棋盘 440 14.2.2 归并排序 443 14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问题的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 15.2 应用 469 15.2.1 0/1背包问题 469 15.2.2 图像压缩 471 15.2.3 矩阵乘法链 476 15.2.4 最短路径 480 15.2.5 网络的无交叉子集 483 15.2.6 元件折叠 486 15.3 参考及推荐读物 491 第16章 回溯 492 16.1 算法思想 492 16.2 应用 496 16.2.1 货箱装船 496 16.2.2 0/1背包问题 503 16.2.3 最大完备子图 506 16.2.4 旅行商问题 508 16.2.5 电路板排列 510 第17章 分枝定界 516 17.1 算法思想 516 17.2 应用 519 17.2.1 货箱装船 519 17.2.2 0/1背包问题 526 17.2.3 最大完备子图 528 17.2.4 旅行商问题 529 17.2.5 电路板排列 532

2008-11-17

空空如也

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

TA关注的人

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