《深入浅出MFC》2/e和CreateWindow 按旧习惯 安排。既符合了新环境的要求,又兼顾到了旧源代码的兼容。 InitApplication 和InitInstance 只不过是两个自定函数,为什么我要对此振振有词呢?原 因是MFC 把这两个函数包装成CWinApp 的两个虚拟成员函数。第6章「MFC 程序的 生与死」对此有详细解释。 消息循环 初始化工作完成后,WinMain 进入所谓的消息循环: while 的确发现有六个执行线程, 其中包括一个主执行线程。 54 55 C++ 的重要性质 C++ 是一种扭转程序员思维模式的语言。 一个人思维模式的扭转,不可能轻而易举一蹴而成。 迩来「对象导向」一词席卷了整个软件界。对象导向程序设计(Object Oriented Programming)其实是一种观念,用什么语言实现它都可以。但,当然,对象导向程序语 言(Object Oriented Programming 的目的,就是要让处理「基础类别之对象」的程序代码,能够完全透通地继 续适当处理「衍生类别之对象」。 可以说,虚拟函数是了解多态(Polymorphism)以及动态绑定的关键。同时,它也是了 解如何使用MFC 的关键。 让我再次提示你,当你设计一套类别,你并不知道使用者会衍生什么新的子类别出来。 如果动物世界中出现了新品种名曰雅虎,类别使用者势必在CAnimal 之下衍生一个 CYahoo。饶是如此,身为基础类别设计者的你,可以利用虚拟函数的特性,将所有动物0 码力 | 1009 页 | 11.08 MB | 1 年前3
Hello 算法 1.0.0b1 C++版读时应该多加关注。 ‧ 实践是学习编程的最佳方式,强烈推荐运行源代码,动手敲代码。 ‧ 本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 将被 展示在仓库与网站主页,以感谢他们对开源社区的无私奉献! 12.2.1. 内容微调 每个页面的右上角都有一个「编辑」图标,你可以按照以下步骤修改文字或代码: 1. 点击编辑按钮,如果遇到提示“需要 Fork 此仓库”,请通过; 2. 修改 Markdown 源文件内容,并检查内容正确性,尽量保持排版格式统一; 3. 在页面底部填写更改说明,然后单击“Propose file cha0 码力 | 187 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 C++版读时应该多加关注。 ‧ 实践是学习编程的最佳方式,强烈推荐运行源代码,动手敲代码。 ‧ 本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 将被 展示在仓库与网站主页,以感谢他们对开源社区的无私奉献! 12.2.1. 内容微调 每个页面的右上角都有一个「编辑」图标,你可以按照以下步骤修改文字或代码: 1. 点击编辑按钮,如果遇到提示“需要 Fork 此仓库”,请通过; 2. 修改 Markdown 源文件内容,并检查内容正确性,尽量保持排版格式统一; 3. 在页面底部填写更改说明,然后单击“Propose file cha0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 C++版实践乃学习编程之最佳途径。强烈建议运行源代码并亲自敲打代码。 ‧ 本书网页版的每个章节都设有讨论区,欢迎随时分享你的疑惑与见解。 7 1. 初识算法 1.1. 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖于基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经在不知不觉中学会了许多算法,并习惯将它们应 源。所有撰稿人将在仓库和网站主页上展示,以感谢他们对开源社区的无私奉献! 16.2.1. 内容微调 在每个页面的右上角有一个「编辑」图标,您可以按照以下步骤修改文本或代码: 1. 点击编辑按钮,如果遇到“需要 Fork 此仓库”的提示,请同意该操作。 2. 修改 Markdown 源文件内容,并确保内容正确,同时尽量保持排版格式的统一。 3. 在页面底部填写修改说明,然后点击“Propose file change”按钮;页面跳转后,点击“Create0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C++ 版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经在不知不觉中学会了许多算法,并习惯将它们应 而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。 1. 内容微调 如图 16‑3 所示,每个页面的右上角都有“编辑图标”。您可以按照以下步骤修改文本或代码。 1. 点击“编辑图标”,如果遇到“需要 Fork 此仓库”的提示,请同意该操作。 2. 修改 Markdown 源文件内容,检查内容的正确性,并尽量保持排版格式的统一。 3. 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 10 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖于基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经在不知不觉中学会了许多算法,并习惯将它们应 然而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。 1. 内容微调 如图 16‑1 所示,每个页面的右上角都有“编辑图标”。您可以按照以下步骤修改文本或代码。 1. 点击“编辑图标”,如果遇到“需要 Fork 此仓库”的提示,请同意该操作。 2. 修改 Markdown 源文件内容,检查内容的正确性,并尽量保持排版格式的统一。 3. 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经在不知不觉中学会了许多算法,并习惯将它们应 而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。 1. 内容微调 如图 16‑3 所示,每个页面的右上角都有“编辑图标”。您可以按照以下步骤修改文本或代码。 1. 点击“编辑图标”,如果遇到“需要 Fork 此仓库”的提示,请同意该操作。 2. 修改 Markdown 源文件内容,检查内容的正确性,并尽量保持排版格式的统一。 3. 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 www.hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经在不知不觉中学会了许多算法,并习惯将它们应 而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。 1. 内容微调 如图 16‑3 所示,每个页面的右上角都有“编辑图标”。您可以按照以下步骤修改文本或代码。 1. 点击“编辑图标”,如果遇到“需要 Fork 此仓库”的提示,请同意该操作。 2. 修改 Markdown 源文件内容,检查内容的正确性,并尽量保持排版格式的统一。 3. 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create0 码力 | 379 页 | 18.48 MB | 10 月前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化因此我想要用 _mm_prefetch 指令手动提示 CPU ,让他预取出下一个缓存行,不要被内部 t++ 的循环迷惑住了,告诉他我们还是要顺序读取下去的 。 • 结果这一提示反而还变慢了。怎么回事? X 方向插桩:手动预取下一缓存行,配合循环分块 • 原来 _mm_prefetch 指令本身的执行也要花费不少时间。我们给 预取提示给太频繁了,反而浪费了时间。 • 实际上只需要每隔0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化。 如果优化了: b = b; 最后 b 没有改变。 导致优化后结果不一样,这就是 编译器放弃优化的原因。 告诉编译器别怕指针别名: __restrict 关键字 __restrict 是一个提示性的关键字,是程序员向 编译器保证:这些指针之间不会发生重叠! 从而他可以放心地优化成功: __restrict 关键字:只需加在非 const 的即可 实际上, __restrict 只需要加在所有具有写入 让编译器放心做 SIMD 优化外,还可以用 OpenMP 的这条指令: 来迫使编译器无视指针别名的问题,并启用 SIMD 优化。不过你得给编译器打开 - fopenmp 这个选项。 循环中的矢量化:编译器提示忽略指针别名 • 除了可以用 __restrict , #pragma omp simd 外,对于 GCC 编译器还可以用: • #pragma GCC ivdep • 表示忽视下方 for0 码力 | 108 页 | 9.47 MB | 1 年前3
共 18 条
- 1
- 2













