《深入浅出MFC》2/e
Visual C++ 4.0(中文版)。在此 之前我买了你的另一本书深入浅出MFC。在读了深入浅出MFC 前面50~70 页之后,我 想我错买了一本很艰深的书籍。我需要的是一本教我如何利用MFC 来产生一个程序的书, 而不是一本教我如何设计一套MFC 的书。但是在我又读了30~40 页之后,我想这本书真是 棒,它告诉了我许多过去我不甚清楚的事情,像是virtual function、template、exception 请问VISUAL C++ 初学者适合的好书? wayne.bbs@bbs.ee.ncu:侯俊杰的深入Visual C++(Inside visual C++ 中译本)不错, 适合初学者对MFC 做初步的认识与应用。深入浅出MFC 这一本原理讲的较多。 Sagitta.bbs@firebird.cs.ccu.edu.tw:Inside Visual C++ 4.0 不是初学者用的书,因为它未从 最基本观念讲起。深入浅出MFC END_MESSAGE_MAP。感激不尽,因为 我常搞不清楚。 titoni:可参考侯俊杰着的深入浅出MFC 2/e 第三章,第八章及第九章,书上的讲解可 以让你有很大的收获。 好象世界末日:最近买了深入浅出MFC。我一页一页仔细地阅读。第一章...第二章... 勉强有点概念,但是到了第三章,感觉好象世界末日了。MFC 六大技术的仿真...好象很 难懂,读起来非常吃力 是不是有其它书讲得比较简单的?我不是计算机科系学生,只是0 码力 | 1009 页 | 11.08 MB | 1 年前3Hello 算法 1.0.0b1 C++版
方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。 0. 写在前面 hello‑algo.com 2 大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一:拼积木。一套积木,除了有许多部件之外,还会附送详细的拼装说明书。我们按照说明书上一步步操作, 即可拼出复杂的积木模型。 如果从数据结构 例二:查字典。在字典中,每个汉字都有一个对应的拼音,而字典是按照拼音的英文字母表顺序排列的。假设 需要在字典中查询任意一个拼音首字母为 ? 的字,一般我们会这样做: 1. 打开字典大致一半页数的位置,查看此页的首字母是什么(假设为 ? ); 2. 由于在英文字母表中 ? 在 ? 的后面,因此应排除字典前半部分,查找范围仅剩后半部分; 3. 循环执行步骤 1‑2 ,直到找到拼音首字母为 ? 的页码时终止。0 码力 | 187 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 C++版
方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时 空效率、实现方法、示例题目等。 0. 写在前面 hello‑algo.com 2 大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一:拼积木。一套积木,除了有许多部件之外,还会附送详细的拼装说明书。我们按照说明书上一步步操作, 即可拼出复杂的积木模型。 如果从数据结构 例二:查字典。在字典中,每个汉字都有一个对应的拼音,而字典是按照拼音的英文字母表顺序排列的。假设 需要在字典中查询任意一个拼音首字母为 ? 的字,一般我们会这样做: 1. 打开字典大致一半页数的位置,查看此页的首字母是什么(假设为 ? ); 2. 由于在英文字母表中 ? 在 ? 的后面,因此应排除字典前半部分,查找范围仅剩后半部分; 3. 循环执行步骤 1‑2 ,直到找到拼音首字母为 ? 的页码时终止。0 码力 | 197 页 | 15.72 MB | 1 年前3Hello 算法 1.0.0b5 C++版
例等。 ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 示例题目等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 Hello 算法内容结构 0.1.3 致谢 2‑6 斐波那契数列的递归树 本质上看,递归体现“将问题分解为更小子问题”的思维范式,这种分治策略是至关重要的。 ‧ 从算法角度看,搜索、排序、回溯、分治、动态规划等许多重要算法策略都直接或间接地应用这种思维 方式。 ‧ 从数据结构角度看,递归天然适合处理链表、树和图的相关问题,因为它们非常适合用分治思想进行分 析。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们 分布有关。时间复杂度分为最差、最佳、平均时间复 杂度,最佳时间复杂度几乎不用,因为输入数据一般需要满足严格条件才能达到最佳情况。 ‧ 平均时间复杂度反映算法在随机数据输入下的运行效率,最接近实际应用中的算法性能。计算平均时 间复杂度需要统计输入数据分布以及综合后的数学期望。 空间复杂度 ‧ 空间复杂度的作用类似于时间复杂度,用于衡量算法占用空间随数据量增长的趋势。 ‧ 算法运行过程中的相0 码力 | 377 页 | 30.69 MB | 1 年前3Hello 算法 1.0.0b4 C++版
法、常见类型、示例等。 ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 示例题目等。 0. 前言 hello‑algo.com 2 Figure 0‑1. Hello 算法内容结构 0.1.3. 致谢 � 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 指数阶增长非常迅速,在实际应用中通常是不可接受的。若一个问题使用「暴力枚举」求解的时间复杂度为 ?(2?) ,那么通常需要使用「动态规划」或「贪心算法」等方法来解决。 // === File: time_complexity.cpp 在数组头部时,达到最佳时间复杂度 O(1) // 当元素 1 在数组尾部时,达到最差时间复杂度 O(n) if (nums[i] == 1) return i; } return -1; } � 实际应用中我们很少使用「最佳时间复杂度」,因为通常只有在很小概率下才能达到,可能会 带来一定的误导性。相反,「最差时间复杂度」更为实用,因为它给出了一个“效率安全值”, 让我们可以放心地使用算法。 从0 码力 | 343 页 | 27.39 MB | 1 年前3Hello 算法 1.1.0 C++ 版
计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社 道题目,熟悉主流的算法问题。初次刷题 时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线”来 复习题目,通常在进行 3~5 轮的重复后,就能将其牢记在心。推荐的题单和刷题计划请见此 GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的0 码力 | 379 页 | 18.47 MB | 1 年前3Hello 算法 1.2.0 简体中文 C++ 版
计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 www.hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书 道题目,熟悉主流的算法问题。初次刷题 时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线”来 复习题目,通常在进行 3~5 轮的重复后,就能将其牢记在心。推荐的题单和刷题计划请见此 GitHub 仓库。 3. 阶段三:搭建知识体系。在学习方面,我们可以阅读算法专栏文章、解题框架和算法教材,以不断丰富 知识体系。在刷题方面,可以尝试采用进阶刷题策略,如按专题分类、一题多解、一解多题等,相关的0 码力 | 379 页 | 18.48 MB | 10 月前3Hello 算法 1.0.0 C++版
例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社 2‑6 斐波那契数列的递归树 从本质上看,递归体现了“将问题分解为更小子问题”的思维范式,这种分治策略至关重要。 ‧ 从算法角度看,搜索、排序、回溯、分治、动态规划等许多重要算法策略直接或间接地应用了这种思维 方式。 ‧ 从数据结构角度看,递归天然适合处理链表、树和图的相关问题,因为它们非常适合用分治思想进行分 析。 2.2.3 两者对比 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 分布有关。时间复杂度分为最差、最佳、平均时间复 杂度,最佳时间复杂度几乎不用,因为输入数据一般需要满足严格条件才能达到最佳情况。 ‧ 平均时间复杂度反映算法在随机数据输入下的运行效率,最接近实际应用中的算法性能。计算平均时 间复杂度需要统计输入数据分布以及综合后的数学期望。 空间复杂度 ‧ 空间复杂度的作用类似于时间复杂度,用于衡量算法占用内存空间随数据量增长的趋势。 ‧ 算法运行过程0 码力 | 378 页 | 17.59 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型
缓存在访问 者 (accessor) 的成员 map 里。访问者对象被我用 OpenMP 标记为 firstprivate ,意味着这个 map 是线程局部的,因此对他的访问不需要加锁, 更快。 应用在刚刚的 SNode 系统中 std::unordered_map 不支持 omp parallel for 遍历…… tbb::concurrent_unordered_map 可以 tbb::parallel_for double :每个占据 8 字节 • 很多 CFD 玩家喜欢用 double 表示浮点 数。 • 然而 double 是双精度浮点数,会占据 8 字节!虽然精度更高,但是在不需要精度 的图形学应用中,就非常浪费内存带宽。 使用 float :每个占据 4 字节 • 可以用单精度的 float ,只占据 4 字节。 • 因为这里的循环体是内存瓶颈( membound ), 就直接加快了 量化,存储时转换成低精度的定点数,读取时再转换 回高精度的浮点数,从而节省 4 倍内存带宽,提升 GPU 性能。 有没有更小的浮点类型? • 浮点数在接近 0 的时候精度更高,在一些图形学应用中还是很必要的(比如表示粒子的速 度),定点数就做不到。 • x86 CPU 上最小的浮点类型就是 32 位的 float ,不能更小了。 • 那么有没有不用定点数就能减小浮点数占用空间的存储方式,比如0 码力 | 102 页 | 9.50 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化
AOSOA 。 • 缺点是必须保证数量是 1024 的整数倍, 而且因为要两次指标索引,随机访问比较 烦。 • 这里的 1024 并非随意选取,而是要让每 个属性 SOA 数组的大小为一个页 ( 4KB )才能最高效,原因稍后会说明。 AOSOA :注意,内部 SOA 的尺寸不宜太小 如果内部 SOA 太小,内部循环只有 16 次连续的读 取, 16 次结束后就会跳跃一段,然后继续连续的 等待数据抵达前空转浪费时间。 页对齐的重要性 • 为什么要 4KB ?原来现在操作系统管理内存是用分页 ( page ),程序的内存是一页一页贴在地址空间中的, 有些地方可能不可访问,或者还没有分配,则把这个页设 为不可用状态,访问他就会出错,进入内核模式。 • 因此硬件出于安全,预取不能跨越页边界,否则可能会触 发不必要的 page fault 。所以我们选用页的大小,因为本 来就不能跨页顺序预取,所以被我们切断掉也无所谓。 来就不能跨页顺序预取,所以被我们切断掉也无所谓。 • 另外,我们可以用 _mm_alloc 申请起始地址对齐到页边 界的一段内存,真正做到每个块内部不出现跨页现象。 手动预取: _mm_prefetch • 对于不得不随机访问很小一块的情况,还可以通过 _mm_prefetch 指令手动预取一个缓存行。 • 这里第一个参数是要预取的地址(最好对齐到缓存 行),第二个参数 _MM_HINT_T0 代表预取数据0 码力 | 147 页 | 18.88 MB | 1 年前3
共 24 条
- 1
- 2
- 3