《深入浅出MFC》2/enew books. x hon.bbs@bbs.ee.ncu.edu.tw 我非常喜欢你的书,不管是著作或是翻译,给人的感觉真的是"深入浅出",我喜欢你用浅 近的比喻说明,来解释一些比较深入和抽象的东西,读你的书,总让我有突然"顿悟" 的感 觉,欣喜自己能在迷时找到良师。 武汉"wking"Microsoft Developer Studio CArchive 類別 / 531 operator<< 和 operator>> / 532 效率考量 / 536 自定 SERIAL 巨集給抽象類別使用 / 537 在 CObList ㆗加入 CStroke 以外的類別 / 537 Document 與 View 交流 - 為 Scribble Step4 Shape 只是一种抽象意念,世界上并没有「形状」这种东西!你可以在一个C++ 程序中做以下动作,但是不符合生活法则: CShape shape; // 世界上没有「形状」这种东西, shape.setcolor(); // 所以这个动作就有点奇怪。 这同时也说出了第三点的另一个否定理由:按理你不能够把一个抽象的「形状」显示 出来,不是吗?! 如果语法允许你产生一个不应该有的抽象对象,或如果语法不支持「把所有形状(不管 0 码力 | 1009 页 | 11.08 MB | 1 年前3
Hello 算法 1.0.0b1 C++版3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特点时,难以避免需要分析它的运行速度和空间使用情 况。因此,在展开学习数据结构与算法之前,建 来了极大的难度。 2.2.2. 统计时间增长趋势 「时间复杂度分析」采取了不同的做法,其统计的不是算法运行时间,而是 算法运行时间随着数据量变大时的 增长趋势。 “时间增长趋势”这个概念比较抽象,我们借助一个例子来理解。设输入数据大小为 ? ,给定三个算法 A , B , C 。 ‧ 算法 A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为「常数阶」。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id ”两项数据,希望实现一个查 询功能:输入一个学号,返回对应的姓名,则可以使用哈希表实现。 Figure 6‑1. 哈希表的抽象表示 6.1.1. 哈希表效率 除了哈希表之外,还可以使用以下数据结构来实现上述查询功能: 1. 无序数组:每个元素为 [学号, 姓名] ; 2. 有序数组:将 1. 中的数组按照学号从小到大排序;0 码力 | 187 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 C++版3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特点时,难以避免需要分析它的运行速度和空间使用情 况。因此,在展开学习数据结构与算法之前,建 来了极大的难度。 2.2.2. 统计时间增长趋势 「时间复杂度分析」采取了不同的做法,其统计的不是算法运行时间,而是 算法运行时间随着数据量变大时的 增长趋势。 “时间增长趋势”这个概念比较抽象,我们借助一个例子来理解。设输入数据大小为 ? ,给定三个算法 A , B , C 。 ‧ 算法 A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为「常数阶」。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id ”两项数据,希望实现一个查 询功能:输入一个学号,返回对应的姓名,则可以使用哈希表实现。 Figure 6‑1. 哈希表的抽象表示 6.1.1. 哈希表效率 除了哈希表之外,还可以使用以下数据结构来实现上述查询功能: 1. 无序数组:每个元素为 [学号, 姓名] ; 2. 有序数组:将 1. 中的数组按照学号从小到大排序;0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.1.0 C++ 版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : 第 2 章 复杂度分析 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 void 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 章 复杂度分析 hello‑algo.com 29 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : // 算法 A 的时间复杂度:常数阶 void algorithm_A(int n) { cout << 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 4.3 列表 「列表 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : 第 2 章 复杂度分析 www.hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b4 C++版3. 复杂度分析重要性 复杂度分析为我们提供了一把评估算法效率的“标尺”,告诉我们执行某个算法所需的时间和空间资源,并使 我们能够对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为第一章的内容。然而,当我们讨论某个数据结构或算法的特点时,我们难以避免要分析其运行速度 和空间使用情况。因此,在深入学习数据结构与算 极大的难 度。 2.2.2. 统计时间增长趋势 「时间复杂度分析」采取了一种不同的方法,其统计的不是算法运行时间,而是算法运行时间随着数据量变大 时的增长趋势。 “时间增长趋势”这个概念较为抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A , B , C 。 ‧ 算法 A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为「常数 以一个包含 ? 个学生的数据库为例,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入 一个学号,返回对应的姓名”的查询功能,则可以采用哈希表来实现。 Figure 6‑1. 哈希表的抽象表示 除哈希表外,我们还可以使用数组或链表实现查询功能。若将学生数据看作数组(链表)元素,则有: ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0b5 C++版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 函数 A、B 和 C : // 算法 A 的时间复杂度:常数阶 void algorithm_A(int n) { cout 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 学号,返回对应的姓名”的查询功能,则可以采用图 6‑1 所示的哈希表来实现。 图 6‑1 哈希表的抽象表示 除哈希表外,数组和链表也可以实现查询功能,它们的效率对比如表 6‑1 所示。 ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由于数组(链表)0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C++ 版後續章節中詳細介紹。 複雜度分析為我們提供了一把評估演算法效率的“標尺”,使我們可以衡量執行某個演算法所需的時間和空 間資源,對比不同演算法之間的效率。 複雜度是個數學概念,對於初學者可能比較抽象,學習難度相對較高。從這個角度看,複雜度分析可能不太 適合作為最先介紹的內容。然而,當我們討論某個資料結構或演算法的特點時,難以避免要分析其執行速度 和空間使用情況。 綜上所述,建議你在深入學 執行時間,這給預估過程帶來了極大 的難度。 2.3.1 統計時間增長趨勢 時間複雜度分析統計的不是演算法執行時間,而是演算法執行時間隨著資料量變大時的增長趨勢。 “時間增長趨勢”這個概念比較抽象,我們透過一個例子來加以理解。假設輸入資料大小為 ? ,給定三個演算 法 A、B 和 C : 第 2 章 複雜度分析 www.hello‑algo.com 29 // 演算法 A 的時間複雜度:常數階 資料緩衝區:在某些資料緩衝區的實現中,也可能會使用環形鏈結串列。比如在音訊、影片播放器中, 資料流可能會被分成多個緩衝塊並放入一個環形鏈結串列,以便實現無縫播放。 4.3 串列 串列(list)是一個抽象的資料結構概念,它表示元素的有序集合,支持元素訪問、修改、新增、刪除和走訪 等操作,無須使用者考慮容量限制的問題。串列可以基於鏈結串列或陣列實現。 ‧ 鏈結串列天然可以看作一個串列,其支持元素增刪查改操作,並且可以靈活動態擴容。0 码力 | 379 页 | 18.79 MB | 10 月前3
C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程这里用到了带 auto 的 lambda ,利用了他具有多 次编译的特性,实现编译多个分支的效果。 • std::visit 、 std::variant 的这种模式称为静态多态, 和虚函数、抽象类的动态多态相对。 • 静态多态的优点是:性能开销小,存储大小固定。 缺点是:类型固定,不能运行时扩充。 用 variant 不用 visit ,就像看四大 名著不看红楼梦,后面我忘了,总 之就是只能度过一个相对失败的人0 码力 | 82 页 | 12.15 MB | 1 年前3
共 12 条
- 1
- 2













