Hello 算法 1.1.0 C++ 版出你的问题,我和小伙伴们将竭诚 为你解答,一般情况下可在两天内回复。 如图 0‑7 所示,网页版每个章节的底部都配有评论区。希望你能多关注评论区的内容。一方面,你可以了解 大家遇到的问题,从而查漏补缺,激发更深入的思考。另一方面,期待你能慷慨地回答其他小伙伴的问题,分 享你的见解,帮助他人进步。 图 0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 在不知不觉中学会了许多算法,并习惯将它们应 用到日常生活中了。下面我将举几个具体的例子来证实这一点。 例一:查字典。在字典里,每个汉字都对应一个拼音,而字典是按照拼音字母顺序排列的。假设我们需要查 找一个拼音首字母为 ? 的字,通常会按照图 1‑1 所示的方式实现。 1. 翻开字典约一半的页数,查看该页的首字母是什么,假设首字母为 ? 。 2. 由于在拼音字母表中 ? 位于 ? 之后,所 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版出你的问题,我和小伙伴们将竭诚 为你解答,一般情况下可在两天内回复。 如图 0‑7 所示,网页版每个章节的底部都配有评论区。希望你能多关注评论区的内容。一方面,你可以了解 大家遇到的问题,从而查漏补缺,激发更深入的思考。另一方面,期待你能慷慨地回答其他小伙伴的问题,分 享你的见解,帮助他人进步。 图 0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 在不知不觉中学会了许多算法,并习惯将它们应 用到日常生活中了。下面我将举几个具体的例子来证实这一点。 例一:查字典。在字典里,每个汉字都对应一个拼音,而字典是按照拼音字母顺序排列的。假设我们需要查 找一个拼音首字母为 ? 的字,通常会按照图 1‑1 所示的方式实现。 1. 翻开字典约一半的页数,查看该页的首字母是什么,假设首字母为 ? 。 2. 由于在拼音字母表中 ? 位于 ? 之后,所 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b1 C++版阅读本书时,请不要“惯着”那些弄不明白的知识点。欢迎在评论区留下你的问题,小伙伴们和我都会给予解 答,您一般 2 日内会得到回复。 同时,也希望你可以多花时间逛逛评论区。一方面,可以看看大家遇到了什么问题,反过来查漏补缺,这往往 可以引起更加深度的思考。另一方面,也希望你可以慷慨地解答小伙伴们的问题、分享自己的见解,大家互相 学习与进步! Figure 0‑7. 评论区示例 0. 写在前面 hello‑algo 。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 Figure 2‑9. 算法使用的相关空间 /* 结构体 */ struct Node { 2. 复杂度分析 以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。 深度学习。神经网络中大量使用了向量、矩阵、张量之间的线性代数运算,这些数据都是以数组的形式构建 的。数组是神经网络编程中最常使用的数据结构。 4.20 码力 | 187 页 | 14.71 MB | 1 年前3
《深入浅出MFC》2/e的书都将重点放在如何使用 Microsoft Developer Studio,很少有对MFC 进行深入而有系统的讲解。而将C++ 与VC++ 相联系,从C++ 的角度来剖析MFC 的运作,深入其设计原理与内部机制的书,更是凤毛 麟角。本人在市面上找了将近四个月,才发现这样的一本,这就是由蜚声海峡两岸的著名电 脑专家侯俊杰先生所着之《深入浅出WINDOWS MFC 程序设计》(按:深入浅出MFC 简体版)。: 先读一点SDK 著作,再读深入浅出MFC,就够了。 剩下就多看MSDN 吧。 我是一个刚学VC 不久的人,想写Windows 程序,却发现一大堆看不懂的函数或类别。 查help,都是英文,难懂其中意思。请问一下有没有关于这方面的函数用法及意义的书 籍呢? 有没有这方面的初学书籍。我逛了几间书店,是有买几本MFC 书籍,不过还是 看不懂。 "apexsoft" 查help,重要的是C++ 的观念。另外就是要了 解MFC 里的Document/View/Frame,以及Dynamic Creation, Message mapping 等等。 深入浅出MFC 第二版对这些部份都有很深入的探讨,把MFC 里的一些机制直接trace code 加以说明。 xv News / BBS 0 码力 | 1009 页 | 11.08 MB | 1 年前3
Hello 算法 1.0.0b2 C++版阅读本书时,请不要“惯着”那些弄不明白的知识点。欢迎在评论区留下你的问题,小伙伴们和我都会给予解 答,您一般 2 日内会得到回复。 同时,也希望你可以多花时间逛逛评论区。一方面,可以看看大家遇到了什么问题,反过来查漏补缺,这往往 可以引起更加深度的思考。另一方面,也希望你可以慷慨地解答小伙伴们的问题、分享自己的见解,大家互相 学习与进步! Figure 0‑7. 评论区示例 0. 写在前面 hello‑algo 。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 Figure 2‑9. 算法使用的相关空间 /* 结构体 */ struct Node { 2. 复杂度分析 以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。 深度学习。神经网络中大量使用了向量、矩阵、张量之间的线性代数运算,这些数据都是以数组的形式构建 的。数组是神经网络编程中最常使用的数据结构。 4.20 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 C++版阅读本书时,请不要“惯着”那些没学明白的知识点。欢迎在评论区提出你的问题,我和其他小伙伴们将竭 诚为你解答,一般情况下可在两天内得到回复。 同时,也希望您能在评论区多花些时间。一方面,您可以了解大家遇到的问题,从而查漏补缺,这将有助于 激发更深入的思考。另一方面,希望您能慷慨地回答其他小伙伴的问题、分享您的见解,让大家共同学习和 进步。 0. 前言 hello‑algo.com 6 Figure 0‑6. 10000011 = −3 3. 数据结构 hello‑algo.com 42 为了解决此问题,计算机引入了「反码」。例如,我们先将原码转换为反码,并在反码下计算 1 + (−2) ,并 将结果从反码转化回原码,则可得到正确结果 −1 。 1 + (−2) = 00000001(原码) + 10000010(原码) = 00000001(反码) + 11111101(反码) = 11111110(反码) 实时更新。根据此 变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:插入元素时可能超出列表容量,此时需要扩容列表。扩容方法是根据扩容倍数创建一个更大 的数组,并将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 本示例旨在帮助读者直观理解列表的工作机制。实际编程语言中,列表实现更加标准和复杂,各个参数的设 定也非常有考究,例如初始0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0b5 C++版为你解答,一般情况下可在两天内回复。 第 0 章 前言 hello‑algo.com 7 如图 0‑6 所示,每篇文章的底部都配有评论区。希望你能多关注评论区的内容。一方面,你可以了解大家遇 到的问题,从而查漏补缺,激发更深入的思考。另一方面,期待你能慷慨地回答其他小伙伴的问题,分享您 的见解,帮助他人进步。 图 0‑6 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement code」。如果我们先将原码转换为反码,并在反码 下计算 1 + (−2) ,最后将结果从反码转化回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 55 1 + (−2) → 0000 0001 (原码) + 1000 0010 (原码) = 0000 0001 们选择 10 作为初始容量。 ‧ 数量记录:声明一个变量 size,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据此 变量,我们可以定位列表尾部,以及判断是否需要扩容。 ‧ 扩容机制:若插入元素时列表容量已满,则需要进行扩容。首先根据扩容倍数创建一个更大的数组,再 将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。 // === File:0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版出你的问题,我和小伙伴们将竭诚 为你解答,一般情况下可在两天内回复。 如图 0‑7 所示,网页版每个章节的底部都配有评论区。希望你能多关注评论区的内容。一方面,你可以了解 大家遇到的问题,从而查漏补缺,激发更深入的思考。另一方面,期待你能慷慨地回答其他小伙伴的问题,分 享你的见解,帮助他人进步。 图 0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 在不知不觉中学会了许多算法,并习惯将它们应 用到日常生活中了。下面我将举几个具体的例子来证实这一点。 例一:查字典。在字典里,每个汉字都对应一个拼音,而字典是按照拼音字母顺序排列的。假设我们需要查 找一个拼音首字母为 ? 的字,通常会按照图 1‑1 所示的方式实现。 1. 翻开字典约一半的页数,查看该页的首字母是什么,假设首字母为 ? 。 2. 由于在拼音字母表中 ? 位于 ? 之后,所 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C++ 版若你是演算法初學者,從未接觸過演算法,或者已經有一些刷題經驗,對資料結構與演算法有模糊的認識, 在會與不會之間反覆橫跳,那麼本書正是為你量身定製的! 如果你已經積累一定的刷題量,熟悉大部分題型,那麼本書可助你回顧與梳理演算法知識體系,倉庫源程式 碼可以當作“刷題工具庫”或“演算法字典”來使用。 若你是演算法“大神”,我們期待收到你的寶貴建議,或者一起參與創作。 前置條件 你需要至少具備任一語言的程式設計基礎,能夠閱讀和編寫簡單程式碼。 感謝我的女朋友泡泡作為本書的首位讀者,從演算法小白的角度提出許多寶貴建議,使得本書更適合 新手閱讀; ‧ 感謝騰寶、琦寶、飛寶為本書起了一個富有創意的名字,喚起大家寫下第一行程式碼“Hello World!” 的美好回憶; ‧ 感謝校銓在智慧財產權方面提供的專業幫助,這對本開源書的完善起到了重要作用; ‧ 感謝蘇潼為本書設計了精美的封面和 logo ,並在我的強迫症的驅使下多次耐心修改; ‧ 感謝 @squidfunk 出你的問題,我和小夥伴們將竭誠 為你解答,一般情況下可在兩天內回覆。 如圖 0‑7 所示,網頁版每個章節的底部都配有評論區。希望你能多關注評論區的內容。一方面,你可以瞭解 大家遇到的問題,從而查漏補缺,激發更深入的思考。另一方面,期待你能慷慨地回答其他小夥伴的問題,分 享你的見解,幫助他人進步。 圖 0‑7 評論區示例 0.2.5 演算法學習路線 從總體上看,我們可以將學習資料結構與演算法的過程劃分為三個階段。0 码力 | 379 页 | 18.79 MB | 10 月前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器pos); 1 2 3 4 5 find(4) begin() prev(end()) end() set 增删改查操作总结 操作 实现方法 增 a.insert(x) 删 a.erase(x) 或者 a.erase(a.find(x)) 改 一旦插入就无法修改,只能先删再增 查 a.find(x) != a.end() 或者 a.count(x) 从 set 中删除指定范围的元素 • ForwardIt end); set 的妙用:排序 • 刚刚说,把 vector 转成 set 会让元素自动排序和去 重。 • 我们其实可以利用这一点,把 vector 转成 set 再转 回 vector ,这样就实现去重了。 • template• void assign(ForwardIt beg, ForwardIt end); 清空 set 会返回第一个等于 x 的元素的迭代器。找不到也 是返回 end() 。 multiset 增删改查操作总结 操作 实现方法 增 a.insert(x) 删 a.erase(x) 或者 a.erase(a.lower_bound(x), a.upper_bound(x)) 改 一旦插入就无法修改,只能先删再增 查 a.find(x) != a.end() 或者 a.count(x) set 系列成员函数总结 0 码力 | 83 页 | 10.23 MB | 1 年前3
共 29 条
- 1
- 2
- 3













