《深入浅出MFC》2/e说,让我们更深入认识程序语言的奥秘。大四学长知道要邀请您来,都非常高兴,相当期待 您的到来。 vi Rusty(枫桥驿站CompBook 版) 深入浅出MFC 我读好几遍了,讲一句实在话,这本书给我的帮助真的很多!毕竟这样深 入挖MFC 运作原理的书难找!要学MFC 又没有Windows SDK 经验者,建议跟 Programming Windows 95 with MFC 一起看,学起MFC 会比较扎实。 若单纯就「买 美国dengqi@glocom-us.com 侯俊杰先生:您好!从学校出来的七年间,我大多从事embedded system software 的设计。 在大陆,主要从事交换机系统软件的设计,到了美国,主要从事卫星通信地面站系统软件的 设计。程序设计主要结合C 和Assembly。在大陆,embedded system 多采用Intel 的 processor,在美国,embedded system 多采用Motorola 励,当然也希望能从你处获得更多的新知。谢谢。 大陆"BaiLu"侯先生:您好!以前我一直是用DELPHI 和PB 主要做调制解调器的,近日在看您编写的《深 入浅出WINDOWS MFC 程序设计》(编按:深入浅出MFC 简体版),收益非浅,很佩 服您的写作水平,讲得非常好。在大陆还是很少有您这般水准写C++ 的书。在此表示感谢。 北京"Zhang Yongzhong" 0 码力 | 1009 页 | 11.08 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C++ 版程式碼審閱:宮蘭景(@Gonglja) Release 1.2.0 2024‑12‑06 序 兩年前,我在力扣上分享了“劍指 Offer”系列題解,受到了許多讀者的鼓勵與支持。在與讀者交流期間,我 最常被問到的一個問題是“如何入門演算法”。漸漸地,我對這個問題產生了濃厚的興趣。 兩眼一抹黑地刷題似乎是最受歡迎的方法,簡單、直接且有效。然而刷題就如同玩“踩地雷”遊戲,自學能 力強的人能夠順利將地雷逐個排掉,而基礎不足的人很 com/krahets/hello‑algo 倉庫。 動畫在 PDF 內的展示效果有限,可訪問 www.hello‑algo.com 網頁版以獲得更佳的閱讀體驗。 推薦語 “一本通俗易懂的資料結構與演算法入門書,引導讀者手腦並用地學習,強烈推薦演算法初學者閱讀!” ——鄧俊輝,清華大學計算機系教授 “如果我當年學資料結構與演算法時有《Hello 演算法》,學起來應該會簡單 10 倍!” ——李沐,亞馬遜資深首席科學家 願這本書在你的腦海中輕輕響起,留下獨特而深刻的旋律。 第 0 章 前言 www.hello‑algo.com 2 0.1 關於本書 本專案旨在建立一本開源、免費、對新手友好的資料結構與演算法入門教程。 ‧ 全書採用動畫圖解,內容清晰易懂、學習曲線平滑,引導初學者探索資料結構與演算法的知識地圖。 ‧ 源程式碼可一鍵執行,幫助讀者在練習中提升程式設計技能,瞭解演算法工作原理和資料結構底層實0 码力 | 379 页 | 18.79 MB | 10 月前3
generic graph librariesNational Laboratory U.S. Department of Energy, the University of Washington, or anyone else. HA 深 RE 站 Rs C UNIVERSITY of National Science Foundation 比 ile] DB 哩, 号 区 本 外 相 NICATIO cvMuNKCATIOWS 有二有 灿瑟必帮 和一是/第 手太则光大 A,训四 昱 站 -本| 厅 是,主 半一司、|全之体 ~ 对 /人-看 奋才全 和 全原 和 刁曾 The Future ls Big Graph: on meetalThngs soneaiadman MD] into containers 5 Q二TY(G) 6 whileQ夫乡 Enumerate 7 入 了EXTRACT-MIN(Q) neighbor vertices 8 for each ve 4dj1(G) 9 证 dv] > df[w] 十0 码力 | 76 页 | 6.59 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming• 例如,右边你今天早上的任务清单。 • 请问你这些任务总共需要多少时间? 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 为什么需要流水线 • 一些懒得动脑子的同学可能会脱口而出, 不就是 5 + 10 + 5 + 15 + 30 + 20 存器来指令解码单元才开始继续工作,很 低效。 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 洗脸 烧开水 刷牙 看比站 吃饭 拉粑粑 5 10 5 15 30 20 为什么需要流水线 • 更高效的办法是,观察每个任务都占用哪些 资源,所占用资源不冲突的可以同时进行, 分钟,比你快一倍多。 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 洗脸 刷牙 烧开水 吃饭 看比站 拉粑粑 5 5 10 20 条件跳转指令 • 让不占用相同资源的任务同时进行,这也是 CPU 流水线的初衷。但理想是美好的,现实0 码力 | 47 页 | 8.45 MB | 1 年前3
Hello 算法 1.1.0 C++ 版如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 使用一个显式的栈来模拟系统调用栈 stackstack; int res = 0; // 递:递归调用 for (int i = n; i > 0; i--) { // 通过“入栈操作”模拟“递” stack.push(i); } // 归:返回结果 while (!stack.empty()) { // 通过“出栈操作”模拟“归” res += stack.top(); i; } return -1; } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差时间复杂度和最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率 可能很小,并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的 0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 使用一个显式的栈来模拟系统调用栈 stackstack; int res = 0; // 递:递归调用 for (int i = n; i > 0; i--) { // 通过“入栈操作”模拟“递” stack.push(i); } // 归:返回结果 while (!stack.empty()) { // 通过“出栈操作”模拟“归” res += stack.top(); i; } return -1; } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差时间复杂度和最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率 可能很小,并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的 0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联系呢?以上述递归函数为例,求和操作在递归的“归”阶段进行。这意味 着最初被调用的函数实际上是最后完成其求和操作的,这种工作机制与栈的“先入后出”原则异曲同工。 事实上,“调用栈”和“栈帧空间”这类递归术语已经暗示了递归与栈之间的密切关系。 1. 递:当函数被调用时,系统会在“调用栈”上为该函数分配新的栈帧,用于存储函数的局部变量、参数、 使用一个显式的栈来模拟系统调用栈 stackstack; int res = 0; // 递:递归调用 for (int i = n; i > 0; i--) { // 通过“入栈操作”模拟“递” stack.push(i); } // 归:返回结果 while (!stack.empty()) { // 通过“出栈操作”模拟“归” res += stack.top(); i; } return -1; } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差时间复杂度和最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率 可能很小,并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的 0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b5 C++版i; } return -1; } 值得说明的是,我们在实际中很少使用最佳时间复杂度,因为通常只有在很小概率下才能达到,可能会带来 一定的误导性。而最差时间复杂度更为实用,因为它给出了一个效率安全值,让我们可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现于“特殊的数据分布”,这些情况的出现概率可能很小, 并不能真实地反映算法运行效率。相比之下,平均时间复杂度可以体现算法在随机输入数据下的运行效率, { if (nums[i] == target) return i; } return -1; } 7. 扩容数组 在复杂的系统环境中,程序难以保证数组之后的内存空间是可用的,从而无法安全地扩展数组容量。因此在 大多数编程语言中,数组的长度是不可变的。 如果我们希望扩容数组,则需重新建立一个更大的数组,然后把原数组元素依次拷贝到新数组。这是一个 ?(?) 的操作,在数组很大的情况下是非常耗时的。 stack 和 queue ,而非链表。 84 第 5 章 栈与队列 � 栈如同叠猫猫,而队列就像猫猫排队。 两者分别代表着先入后出和先入先出的逻辑关系。 第 5 章 栈与队列 hello‑algo.com 85 5.1 栈 「栈 stack」是一种遵循先入后出的逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子,如果需要拿出底部的盘子,则需要先将上面的盘子依次取出。我们 将盘0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0b4 C++版遍历数组和遍历链表等操作的时间复杂度均为 ?(?) ,其中 ? 为数组或链表的长度。 � 如何确定输入数据大小 ? ? 数据大小 ? 需根据输入数据的类型来具体确定。例如,在上述示例中,我们直接将 ? 视为输 入数据大小;在下面遍历数组的示例中,数据大小 ? 为数组的长度。 // === File: time_complexity.cpp === /* 线性阶(遍历数组) */ int arrayTraversal(vectorreturn -1; } � 实际应用中我们很少使用「最佳时间复杂度」,因为通常只有在很小概率下才能达到,可能会 带来一定的误导性。相反,「最差时间复杂度」更为实用,因为它给出了一个“效率安全值”, 让我们可以放心地使用算法。 从上述示例可以看出,最差或最佳时间复杂度只出现在“特殊分布的数据”中,这些情况的出现概率可能很 小,因此并不能最真实地反映算法运行效率。相较之下,「平均时间复杂度」可以体现算法在随机输入数据下 「栈 Stack」是一种遵循先入后出(First In, Last Out)原则的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子,如果需要拿出底部的盘子,则需要先将上面的盘子依次取出。我们 将盘子替换为各种类型的元素(如整数、字符、对象等),就得到了栈数据结构。 在栈中,我们把堆叠元素的顶部称为「栈顶」,底部称为「栈底」。将把元素添加到栈顶的操作叫做「入栈」, 而删除栈顶元素的操作叫做「出栈」。 0 码力 | 343 页 | 27.39 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程上执行完毕,再返回。实际上只是把 kernel 这个任务推送到 GPU 的执行队列上,然后立即 返回,并不会等待执行完毕。 • 因此可以调用 cudaDeviceSynchronize() ,让 CPU 陷 入等待,等 GPU 完成队列的所有任务后再返回。从而 能够在 main 退出前等到 kernel 在 GPU 上执行完。 定义在 GPU 上的设备函数 • __global__ 用于定义核函数,他在 简单的问题反而复杂化。 • 怪不得王鑫磊在 ZPC 里要自己造轮子哦,虽然是 C++03 ,总感觉是几百年前的编程语言。 • 现在很多“老年”教材对 cpp 的认识也停留在 C++03 , B 站 / 油管偶尔翻出几个介绍 C++11 新特性的视频已经算很先进很前卫了,然而现在 C++23 的标准都已经开始往官网上挂了…… 第 7 章:原子操作 经典案例:数组求和 • 如何并行地对数组进行求和操作?0 码力 | 142 页 | 13.52 MB | 1 年前3
共 32 条
- 1
- 2
- 3
- 4













