现代C++ 教程:高速上手C++11/14/17/20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 第 1 章迈向现代 C++ 8 1.1 被弃用的特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 与 C 门,所有这些新标准中扩充的特性,给 C++ 这门语言注入了新的活力。那些还在坚持使用传统 C++ (本书把 C++98 及其之前的 C++ 特性均称之为传统 C++)而未接触过现代 C++ 的 C++ 程序员在 见到诸如 Lambda 表达式这类全新特性时,甚至会流露出『学的不是同一门语言』的惊叹之情。 现代 C++ (本书中均指 C++11/14/17/20) 为传统 C++ 注入的大量特性使得整个 C++ C++ 变得更加 像一门现代化的语言。现代 C++ 不仅仅增强了 C++ 语言自身的可用性,auto 关键字语义的修改使得我 们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行了大量的强化,Lambda 表达式的出 现让 C++ 具有了『匿名函数』的『闭包』特性,而这一特性几乎在现代的编程语言(诸如 Python/Swift/. . . )中已经司空见惯,右值引用的出现解决了 C++0 码力 | 83 页 | 2.42 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化a’’ 局部数组,一步抵 16 步 • 一次性读取到局部数组 ta 里,在局部迭代 16 次。 • 注意到局部数组是 64 大小,这包含了中心的 32 个元 素,还包含因为 jacobi 特性需要周围两个元素,导致 迭代 16 次就需要往边缘扩张的 16 个元素。 • 因为局部数组的大小远远小于一级缓存,这样迭代时 读写的带宽就是一级缓存的速度,几乎没有影响。 • 这里一次循环体直接相当于 • 其实操作系统惰性分配的特性,也是 SPGrid ( Sparsely-Paged-Grid )得以实现的基础 ,他利用 mmap 分配比机器大得多的内存(比如 2048*2028*1024 的三维网格),然后 在里面索引,这样就相当于利用硬件的分页机制实现了稀疏数据结构,既能高效利用内存 ,随机访问和插桩又特别高效。有兴趣可以研究一下他们的论文,也用了莫顿序增强 TLB 和缓存的局域性,非常精彩。 thread_local 表示 如有多个线程,每个线程保留一个 tmp 对象的副本, 防止多线程调用 func 出错。 • 返回时(或者进入时)调用 tmp.clear() 清除已有数据。 由于 vector 的特性,他只会把 size() 标记为 0 并调 用其成员的解构函数,而不会实际释放内存( free )。 • 因此第二次进入的时候,如果 n 不超过上一次的大小 ,就还是用的第一次分配的内存,避免了重新分配的开0 码力 | 147 页 | 18.88 MB | 1 年前3
《深入浅出MFC》2/e已。如果已接触过C++ 但不十分熟悉,你可以一边复习C++ 一边学习MFC,这也是 我所鼓励的方式(很多人是为了使用MFC 而去学习C++ 的)。C++ 语言的继承 (inheritance)特性对于我们使用MFC 尤为重要,因为使用MFC 就是要继承各个类别 并为己用。所以,你应该对C++ 的继承特质(以及虚拟函数,当然)多加体会。我在 第2章安排了一些C++ 的必要基础。我所挑选的题目都是本书会用到的技术,而其深 其皮其肉或其骨,是不可能有所精进的,即使能够操控wizard,充其量却也只是个puppet, 对于手上的程序代码,没有自主权。 我认为学习MFC 之前,必要的基础是,对于Windows 程序的事件驱动特性的了解(包 括消息的产生、获得、分派、判断、处理),以及对C++ 多态(polymorphism)的精确 体会。本章所提出的,是我对第一项必要基础的探讨,你可以从中获得关于Windows 程 命令消息, 识别码为IDOK,于是流往 图 1- 4 对话框的诞生、运作、结束 24 模块定义文件(.DEF) Windows 程序需要一个模块定义文件,将模块名称、程序节区和资料节区的内存特性、 模块堆积(heap)大小、堆栈(stack)大小、所有callback 函数名称...等等登记下来。下 面是个实例: NAME Generic DESCRIPTION 'Generic0 码力 | 1009 页 | 11.08 MB | 1 年前3
Hello 算法 1.0.0b4 C++版初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 14.2. 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 14.3. 动态规划解题思路 . . . . 因为这正是本书存在的意义。接下来,这本书将一步步引导你深入数据结构与算法的知识殿 堂。 1.2. 算法是什么 1.2.1. 算法定义 「算法 Algorithm」是在有限时间内解决特定问题的一组指令或操作步骤。算法具有以下特性: ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,相同的输入和运行条件下,输出始终相同。 1.2.2. 数据结构定义 2.5. 链表典型应用 单向链表通常用于实现栈、队列、散列表和图等数据结构。 ‧ 栈与队列:当插入和删除操作都在链表的一端进行时,它表现出先进后出的的特性,对应栈;当插入操 作在链表的一端进行,删除操作在链表的另一端进行,它表现出先进先出的特性,对应队列。 ‧ 散列表:链地址法是解决哈希冲突的主流方案之一,在该方案中,所有冲突的元素都会被放到一个链表 中。 ‧ 图:邻接表是表示图的一种常0 码力 | 343 页 | 27.39 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化又被称为矢量,而原始的一次只能处理 1 个 float 的方式,则称为 标量。 • 在一定条件下,编译器能够把一个处理标量 float 的代码,转换成一个利用 SIMD 指令的 ,处理矢量 float 的代码,从而增强你程序的吞吐能力! • 通常认为利用同时处理 4 个 float 的 SIMD 指令可以加速 4 倍。但是如果你的算法不 适合 SIMD ,则可能加速达不到 4 倍;也有因为 SIMD 让访问内存更有规律,节约了指0 码力 | 108 页 | 9.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 14.3 动态规划解题思路 . . . . . 继续往下阅读,这本书 将引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 2.4 链表典型应用 单向链表通常用于实现栈、队列、哈希表和图等数据结构。 ‧ 栈与队列:当插入和删除操作都在链表的一端进行时,它表现出先进后出的的特性,对应栈;当插入操 作在链表的一端进行,删除操作在链表的另一端进行,它表现出先进先出的特性,对应队列。 ‧ 哈希表:链地址法是解决哈希冲突的主流方案之一,在该方案中,所有冲突的元素都会被放到一个链表 中。 ‧ 图:邻接表是表示图的一种常0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.1.0 C++ 版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.3 动态规划解题思路 . . . . . ,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 4.2.4 链表典型应用 单向链表通常用于实现栈、队列、哈希表和图等数据结构。 ‧ 栈与队列:当插入和删除操作都在链表的一端进行时,它表现出先进后出的特性,对应栈;当插入操作 在链表的一端进行,删除操作在链表的另一端进行,它表现出先进先出的特性,对应队列。 ‧ 哈希表:链式地址是解决哈希冲突的主流方案之一,在该方案中,所有冲突的元素都会被放到一个链表 中。 ‧ 图:邻接表是表示图的一种常0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 14.3 动态规划解题思路 . . . . . 请继续往下阅读,本书将 引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 4.2.4 链表典型应用 单向链表通常用于实现栈、队列、哈希表和图等数据结构。 ‧ 栈与队列:当插入和删除操作都在链表的一端进行时,它表现出先进后出的特性,对应栈;当插入操作 在链表的一端进行,删除操作在链表的另一端进行,它表现出先进先出的特性,对应队列。 ‧ 哈希表:链式地址是解决哈希冲突的主流方案之一,在该方案中,所有冲突的元素都会被放到一个链表 中。 ‧ 图:邻接表是表示图的一种常0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.3 动态规划解题思路 . . . . . ,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 78 4.2.4 链表典型应用 单向链表通常用于实现栈、队列、哈希表和图等数据结构。 ‧ 栈与队列:当插入和删除操作都在链表的一端进行时,它表现的特性为先进后出,对应栈;当插入操作 在链表的一端进行,删除操作在链表的另一端进行,它表现的特性为先进先出,对应队列。 ‧ 哈希表:链式地址是解决哈希冲突的主流方案之一,在该方案中,所有冲突的元素都会被放到一个链表 中。 ‧ 图:邻接表是表示0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 C++ 版“如果我當年學資料結構與演算法時有《Hello 演算法》,學起來應該會簡單 10 倍!” ——李沐,亞馬遜資深首席科學家 電腦的出現為世界帶來了巨大的變革,它憑藉高速的運算能力與卓越的可程式化特性,成為執行演算法 與處理資料的理想媒介。無論是電玩遊戲的逼真畫面、自動駕駛的智慧決策,還是 AlphaGo 的精彩棋局、 ChatGPT 的自然互動,這些應用都是演算法在電腦上的精妙演繹。 事 1 初探動態規劃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 14.2 動態規劃問題特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.3 動態規劃解題思路 . . . . . 往下閱讀,本書將引導 你邁入資料結構與演算法的知識殿堂。 1.2 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義0 码力 | 379 页 | 18.79 MB | 10 月前3
共 25 条
- 1
- 2
- 3













