《深入浅出MFC》2/e
有侯捷网站的 一个GBK mirror,各位也可试着自该处下载。 我所做的这份电子书是繁体版,我没有精力与时间将它转为简体。这已是我能 为各位尽力的极限。如果(万一)您看不到文件内容,可能与字形的安装有关- 虽然我已尝试内嵌字形。anyway,阅读方面的问题我亦没有精力与时间为您解 决。请各位自行开辟讨论区,彼此交换阅读此电子书的solution。请热心的读者 告诉我您阅读成功与否,以及网上讨论区(如有的话)在哪里。 jjhou@ccca.nctu.edu.tw FAX 886-3-5733976 4 5 第二版序 任何人看到前面的读者来函,都会感动于一本计算机书籍的读者与作者竟然能够产生如此深厚 的共鸣,以及似无若有的长期情感。 何况,身为这本书的作者的我! 我写的是一本技术书籍,但是赢得未曾谋面的朋友们的信赖与感情。我知道,那是因为这本 书里面也有许多我自己的感情。每当收到读友们针对这本书寄来的信件(纸张的或电子的), 命令项。或者用来表示一个对话窗,例如我写:【New Project】对话窗。 磁盘内容与安装 本书光盘片内含书中所有的范例程序,包括源代码与EXE 档。中介文件(如.OBJ 和.RES 等)并未放入。所有程序都可以在Visual C++ 5.0 整合环境中制作出来。安装 方式很简单(根本没有什么安装方式):利用DOS 外部指令,XCOPY,把整个光盘片 拷贝到你的硬盘上即是了。 范例程序说明0 码力 | 1009 页 | 11.08 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南
中则是基于定义者所在路径,优先访问定义者的作用域。这里需要 set(key val PARENT_SCOPE) 才能修改到外面的变量。 第二章:第三方库 / 依赖项配置 用 find_package 寻找系统中安装的第三方库并链接他们 find_package 命令 • 常用参数列表一览: • find_package([version] [EXACT] [QUIET] [CONFIG] find_package(Qt5) 则是会去找名为 Qt5Config.cmake 的文件。 • 这些形如 包名 + Config.cmake 的文件,我称之为包配置文件。 • Qt5Config.cmake 是你安装 Qt5 时,随 libQt5Core.so 等实际的库文件,一起装到你的 系统中去的。以我的 Arch Linux 系统为例: • 包配置文件位于 /usr/lib/cmake/Qt5/Qt5Config 包配置文件由第三方库的作者( Qt 的开发团队)提供,在这个库安装时( Qt 的安装程序 或 apt install 等)会自动放到 /usr/lib/cmake/XXX/XXXConfig.cmake 这个路径(其中 XXX 是包名),供 CMake 用户找到并了解该包的具体信息。 • /usr/lib/cmake 这个位置是 CMake 和第三方库作者约定俗成的,由第三方库的安装程序 负责把包配置文件放到这里。如果第三方库的作者比较懒,没提供 0 码力 | 56 页 | 6.87 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针
vs 无符号整数 • 有时候我们是需要表示负数的。而刚刚那种二进制的做法,只能表示正数和零。 • 怎么办?可能有的同学会想,不妨这样来设计:让二进制的最高位表示符号位。 • 比如 00000011 表示 3 , 10000011 表示 -3 ,这样不就区分开来了吗?这叫做原码表示 法。 • 的确可以,这种表示方式牺牲了一位作为符号位,剩下 7 位继续表示值。 • 这样的设计下无符号可以表示 实际上表示 -1 , 11111111 则表示 -128 ,让负数部分整体“平 移”一位,这样就不会出现 -0 这种奇怪的东西了,而且表示范围也扩大了一位,虽然是扩 大在负数部分。 有符号整数 vs 无符号整数 • 刚刚说的让 10000000 表示 -1 , 11111111 表示 -128 的方法就叫做反码表示法。 • 但是这样还有一个问题,那就是硬件电路上,需要完全重新设计,对符号位做一些特殊判 = 1 ,在计算机看来就是: • 11111111 + 00000010 = 100000001 • 正好和普通的二进制加法一样,只需要丢弃最前面的那一位进位就可以了。 • 这样就重用了现有的无符号加法器,从而节省了宝贵的电路板空间。 • 补码和反码一样,让有符号整数可以表示 -128 到 127 。 • 其中负数的范围反而比正数大是因为要回避 -0 。 字节的单位: KB , MB ,0 码力 | 128 页 | 2.95 MB | 1 年前3Hello 算法 1.0.0b1 C++版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 12. 附录 180 12.1. 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 12.2. 一起参与创作 . . 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。 0. 写在前面 hello‑algo.com 5 Figure 0‑4. 运行代码示例 第一步:安装本地编程环境。参照附录教程,如果已有可直接跳过。 第二步:下载代码仓。如果已经安装 Git ,可以通过命令行来克隆代码仓。 git clone https://github.com/krahets/hello-algo.git 当然,你也可以点击“Download 。你可能会想,这并不符合日常习惯,首个元素的 索引为什么不是 1 呢,这不是更加自然吗?我认同你的想法,但请先记住这个设定,后面讲内 存地址计算时,我会尝试解答这个问题。 数组初始化。一般会用到无初始值、给定初始值两种写法,可根据需求选取。在不给定初始值的情况下,一般 所有元素会被初始化为默认值 0 。 // === File: array.cpp === /* 初始化数组 */ //0 码力 | 187 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 C++版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 12. 附录 190 12.1. 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 12.2. 一起参与创作 . . 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。 0. 写在前面 hello‑algo.com 5 Figure 0‑4. 运行代码示例 第一步:安装本地编程环境。参照附录教程,如果已有可直接跳过。 第二步:下载代码仓。如果已经安装 Git ,可以通过命令行来克隆代码仓。 git clone https://github.com/krahets/hello-algo.git 当然,你也可以点击“Download 。你可能会想,这并不符合日常习惯,首个元素的 索引为什么不是 1 呢,这不是更加自然吗?我认同你的想法,但请先记住这个设定,后面讲内 存地址计算时,我会尝试解答这个问题。 数组初始化。一般会用到无初始值、给定初始值两种写法,可根据需求选取。在不给定初始值的情况下,一般 所有元素会被初始化为默认值 0 。 // === File: array.cpp === /* 初始化数组 */ //0 码力 | 197 页 | 15.72 MB | 1 年前3Hello 算法 1.0.0 C++版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 第 16 章 附录 364 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 16.2 一起参与创作 . . . . 第 0 章 前言 hello‑algo.com 6 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录所示的教程进行安装,如果已安装,则可跳过此步骤。 第二步:克隆或下载代码仓库。前往 GitHub 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分0 码力 | 378 页 | 17.59 MB | 1 年前3Hello 算法 1.1.0 C++ 版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 第 16 章 附录 362 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 16.2 一起参与创作 . . . . 第 0 章 前言 hello‑algo.com 6 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录所示的教程进行安装,如果已安装,则可跳过此步骤。 第二步:克隆或下载代码仓库。前往 GitHub 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分0 码力 | 379 页 | 18.47 MB | 1 年前3Hello 算法 1.2.0 简体中文 C++ 版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 第 16 章 附录 362 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 16.2 一起参与创作 . . . . 章 前言 www.hello‑algo.com 6 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录所示的教程进行安装,如果已安装,则可跳过此步骤。 第二步:克隆或下载代码仓库。前往 GitHub 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github.com/krahets/hello-algo 同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 www.hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分0 码力 | 379 页 | 18.48 MB | 10 月前3Hello 算法 1.0.0b5 C++版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 第 16 章 附录 368 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 16.2 一起参与创作 . . . . 与阅读代码相比,编写代码的过程往往能带来更多收获。动手学,才是真的学。 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录教程进行安装,如果已安装则可跳过此步骤。 第二步:下载代码仓。如果已经安装 Git ,可以通过以下命令克隆本仓库。 git clone https://github.com/krahets/hello-algo.git 随着计算机的蓬勃发展,字符集与编码标准百花齐放,而这带来了许多问题。一方面,这些字符集一般只定 义了特定语言的字符,无法在多语言环境下正常工作。另一方面,同一种语言也存在多种字符集标准,如果 两台电脑安装的是不同的编码标准,则在信息传递时就会出现乱码。 那个时代的研究人员就在想:如果推出一个足够完整的字符集,将世界范围内的所有语言和符号都收录其 中,不就可以解决跨语言环境和乱码问题了吗?在这种想法的驱动下,一个大而全的字符集0 码力 | 377 页 | 30.69 MB | 1 年前3Hello 算法 1.0.0b4 C++版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 16. 附录 335 16.1. 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 16.2. 一起参与创作 . . . 。如果时间充裕,建议参照代码自行敲一遍。与仅阅读 代码相比,编写代码的过程往往能带来更多收获。 Figure 0‑3. 运行代码示例 第一步:安装本地编程环境。请参照附录教程进行安装,如果已安装则可跳过此步骤。 第二步:下载代码仓。如果已经安装 Git ,可以通过以下命令克隆本仓库。 git clone https://github.com/krahets/hello-algo.git 随着计算机的蓬勃发展,字符集与编码标准百花齐放,而这带来了许多问题。一方面,这些字符集一般只定 义了特定语言的字符,无法在多语言环境下正常工作;另一方面,同一种语言也存在多种字符集标准,如果 两台电脑安装的是不同的编码标准,则在信息传递时就会出现乱码。 那个时代的人们就在想:如果推出一个足够完整的字符集,将世界范围内的所有语言和符号都收录其中,不 就可以解决跨语言环境和乱码问题了吗?在这种想法的驱动下,一个大而全的字符集0 码力 | 343 页 | 27.39 MB | 1 年前3
共 26 条
- 1
- 2
- 3