 Hello 算法 1.1.0 C++ 版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 379 页 | 18.47 MB | 1 年前3 Hello 算法 1.1.0 C++ 版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 379 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0 C++版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 378 页 | 17.59 MB | 1 年前3 Hello 算法 1.0.0 C++版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 378 页 | 17.59 MB | 1 年前3
 Hello 算法 1.0.0b5 C++版在各种机器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析体现算法运行所需的时间(空间)资源与输入数据大小之间的关系。它描述了随着输入数据大小 的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 47 ‧ 复杂度分析可以克服实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 377 页 | 30.69 MB | 1 年前3 Hello 算法 1.0.0b5 C++版在各种机器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析体现算法运行所需的时间(空间)资源与输入数据大小之间的关系。它描述了随着输入数据大小 的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 hello‑algo.com 47 ‧ 复杂度分析可以克服实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧0 码力 | 377 页 | 30.69 MB | 1 年前3
 Hello 算法 1.0.0b4 C++版着我们需要在各种 机器上进行测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,输入数据量较小时, 算法 A 的运行时间可能短于算法 B;而输入数据量较大时,测试结果可能相反。因此,为了得到有说服力的 结论,我们需要测试各种规模的输入数据,这样需要占用大量的计算资源。 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为 如果你对复杂度分析的概念仍感到困惑,无需担心,我们会在后续章节详细介绍。 2.1.3. 复杂度分析重要性 复杂度分析为我们提供了一把评估算法效率的“标尺”,告诉我们执行某个算法所需的时间和空间资源,并使 我们能够对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为第一章的内容。然而,当我们讨论某个数据结构或算 算法效率评估 2. 复杂度 hello‑algo.com 35 ‧ 时间效率和空间效率是评价算法性能的两个关键维度。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 ‧ 复杂度分析可以克服实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧ 时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可0 码力 | 343 页 | 27.39 MB | 1 年前3 Hello 算法 1.0.0b4 C++版着我们需要在各种 机器上进行测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,输入数据量较小时, 算法 A 的运行时间可能短于算法 B;而输入数据量较大时,测试结果可能相反。因此,为了得到有说服力的 结论,我们需要测试各种规模的输入数据,这样需要占用大量的计算资源。 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为 如果你对复杂度分析的概念仍感到困惑,无需担心,我们会在后续章节详细介绍。 2.1.3. 复杂度分析重要性 复杂度分析为我们提供了一把评估算法效率的“标尺”,告诉我们执行某个算法所需的时间和空间资源,并使 我们能够对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为第一章的内容。然而,当我们讨论某个数据结构或算 算法效率评估 2. 复杂度 hello‑algo.com 35 ‧ 时间效率和空间效率是评价算法性能的两个关键维度。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 ‧ 复杂度分析可以克服实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧ 时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可0 码力 | 343 页 | 27.39 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 C++ 版试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 www.hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度0 码力 | 379 页 | 18.48 MB | 10 月前3 Hello 算法 1.2.0 简体中文 C++ 版试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 第 2 章 复杂度分析 www.hello‑algo.com 49 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度0 码力 | 379 页 | 18.48 MB | 10 月前3
 现代C++ 教程:高速上手C++11/14/17/20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 第 10 章展望:C++20 简介 80 概念与约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 模块 本身并没有被修改。 第二个问题,为什么常量引用允许绑定到非左值?原因很简单,因为 Fortran 需要。 移动语义 传统 C++ 通过拷贝构造函数和赋值操作符为类对象设计了拷贝/复制的概念,但为了实现对资源的 移动操作,调用者必须使用先复制、再析构的方式,否则就需要自己实现移动对象的接口。试想,搬家的 时候是把家里的东西直接搬到新家去,而不是将所有东西复制一份(重买)再放到新家、再把原来的东 西 中,『记得』手动释放资源,总不是最佳实践。因为我们很有可能就忘记了去释放资源 而导致泄露。所以通常的做法是对于一个对象而言,我们在构造函数的时候申请空间,而在析构函数(在 离开作用域时调用)的时候释放空间,也就是我们常说的 RAII 资源获取即初始化技术。 凡事都有例外,我们总会有需要将对象在自由存储上分配的需求,在传统 C++ 里我们只好使用 new 和 delete 去『记得』对资源进行释放。而0 码力 | 83 页 | 2.42 MB | 1 年前3 现代C++ 教程:高速上手C++11/14/17/20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 第 10 章展望:C++20 简介 80 概念与约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 模块 本身并没有被修改。 第二个问题,为什么常量引用允许绑定到非左值?原因很简单,因为 Fortran 需要。 移动语义 传统 C++ 通过拷贝构造函数和赋值操作符为类对象设计了拷贝/复制的概念,但为了实现对资源的 移动操作,调用者必须使用先复制、再析构的方式,否则就需要自己实现移动对象的接口。试想,搬家的 时候是把家里的东西直接搬到新家去,而不是将所有东西复制一份(重买)再放到新家、再把原来的东 西 中,『记得』手动释放资源,总不是最佳实践。因为我们很有可能就忘记了去释放资源 而导致泄露。所以通常的做法是对于一个对象而言,我们在构造函数的时候申请空间,而在析构函数(在 离开作用域时调用)的时候释放空间,也就是我们常说的 RAII 资源获取即初始化技术。 凡事都有例外,我们总会有需要将对象在自由存储上分配的需求,在传统 C++ 里我们只好使用 new 和 delete 去『记得』对资源进行释放。而0 码力 | 83 页 | 2.42 MB | 1 年前3
 Hello 算法 1.0.0b1 C++版在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。 理论估算 既然实际测试具有很大的局限性,那么我们是否可以仅通 算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特 最优解法。 2.5. 小结 算法效率评估 ‧「时间效率」和「空间效率」是算法性能的两个重要的评价维度。 ‧ 我们可以通过「实际测试」来评估算法效率,但难以排除测试环境的干扰,并且非常耗费计算资源。 ‧「复杂度分析」克服了实际测试的弊端,分析结果适用于所有运行平台,并且可以体现不同数据大小下的 算法效率。 时间复杂度 ‧「时间复杂度」统计算法运行时间随着数据量变大时的增长趋势,可以有效评估算法效率,但在某些情况0 码力 | 187 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 C++版在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。 理论估算 既然实际测试具有很大的局限性,那么我们是否可以仅通 算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特 最优解法。 2.5. 小结 算法效率评估 ‧「时间效率」和「空间效率」是算法性能的两个重要的评价维度。 ‧ 我们可以通过「实际测试」来评估算法效率,但难以排除测试环境的干扰,并且非常耗费计算资源。 ‧「复杂度分析」克服了实际测试的弊端,分析结果适用于所有运行平台,并且可以体现不同数据大小下的 算法效率。 时间复杂度 ‧「时间复杂度」统计算法运行时间随着数据量变大时的增长趋势,可以有效评估算法效率,但在某些情况0 码力 | 187 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 C++版在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。 理论估算 既然实际测试具有很大的局限性,那么我们是否可以仅通 算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特 但时间和空间使用整体更加均衡,因此为本题最优解法。 2.5. 小结 算法效率评估 ‧ 时间效率和空间效率是算法性能的两个重要的评价维度。 ‧ 我们可以通过实际测试来评估算法效率,但难以排除测试环境的干扰,并且非常耗费计算资源。 ‧ 复杂度分析克服了实际测试的弊端,分析结果适用于所有运行平台,并且可以体现不同数据大小下的算 法效率。 时间复杂度 ‧ 时间复杂度统计算法运行时间随着数据量变大时的增长趋势,可以有效评估算法效率,但在某些情况下0 码力 | 197 页 | 15.72 MB | 1 年前3 Hello 算法 1.0.0b2 C++版在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。 理论估算 既然实际测试具有很大的局限性,那么我们是否可以仅通 算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特 但时间和空间使用整体更加均衡,因此为本题最优解法。 2.5. 小结 算法效率评估 ‧ 时间效率和空间效率是算法性能的两个重要的评价维度。 ‧ 我们可以通过实际测试来评估算法效率,但难以排除测试环境的干扰,并且非常耗费计算资源。 ‧ 复杂度分析克服了实际测试的弊端,分析结果适用于所有运行平台,并且可以体现不同数据大小下的算 法效率。 时间复杂度 ‧ 时间复杂度统计算法运行时间随着数据量变大时的增长趋势,可以有效评估算法效率,但在某些情况下0 码力 | 197 页 | 15.72 MB | 1 年前3
 《深入浅出MFC》2/e如: CreateWindow 这是Win32 函数 strtok 这是C Runtime 函数库的函数 WM_CREATE 这是Windows 消息 ID_FILE_OPEN 这是资源识别码(ID) CDocument::Serialize 这是MFC 类别的成员函数 m_pNewViewClass 这是MFC 类别的成员变量 BEGIN_MESSAGE_MAP 这是MFC Scribble Step2-修改使用者接口(第9章):这个版本变化了菜单,使程序多 了笔宽设定功能。由于菜单的变化,也带动了工具栏与状态列的变化。 从这个版本中我们可以学习如何使用资源编辑器,制作各式各样的程序资源。为了把 菜单命令处理函数放置在适当的类别之中,我们需要深入了解所谓的Message ■ ■ ■ ■ 第0章 你㆒定要知道(導讀) 37 Mapping 和Command 程序分为「程序代码」和「UI(User Interface)资源」两大部份,两部份最后以RC 编译器整合为一个完整的EXE 文件(图1-1)。所谓UI 资源是指功能菜单、对话框 外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各 种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓 的资源描述档(.rc)中描述它们。RC 编译器(RC.EXE)读取RC0 码力 | 1009 页 | 11.08 MB | 1 年前3 《深入浅出MFC》2/e如: CreateWindow 这是Win32 函数 strtok 这是C Runtime 函数库的函数 WM_CREATE 这是Windows 消息 ID_FILE_OPEN 这是资源识别码(ID) CDocument::Serialize 这是MFC 类别的成员函数 m_pNewViewClass 这是MFC 类别的成员变量 BEGIN_MESSAGE_MAP 这是MFC Scribble Step2-修改使用者接口(第9章):这个版本变化了菜单,使程序多 了笔宽设定功能。由于菜单的变化,也带动了工具栏与状态列的变化。 从这个版本中我们可以学习如何使用资源编辑器,制作各式各样的程序资源。为了把 菜单命令处理函数放置在适当的类别之中,我们需要深入了解所谓的Message ■ ■ ■ ■ 第0章 你㆒定要知道(導讀) 37 Mapping 和Command 程序分为「程序代码」和「UI(User Interface)资源」两大部份,两部份最后以RC 编译器整合为一个完整的EXE 文件(图1-1)。所谓UI 资源是指功能菜单、对话框 外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各 种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓 的资源描述档(.rc)中描述它们。RC 编译器(RC.EXE)读取RC0 码力 | 1009 页 | 11.08 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 02 现代 C++ 入门:RAII 内存管理getter/setter 函数分离了声明和定 义,实现在另一个文件时! C++ 思想: RAII ( Resource Acquisition Is Initialization ) 资源获取视为初始化,反之,资源释放视为销毁 C++ 除了用于初始化的构造函数( constructor ) 还包括了用于销毁的解构函数( destructor ) 离开 {} 作用域自动释放 手动释放 RAII Python 等垃圾回收语言不同, C++ 的 解构函数是显式的,离开作用域自动销毁,毫不含 糊(有好处也有坏处,对高性能计算而言利大于 弊) 如果没有解构函数,则每个带有返回的分 支都要手动释放所有之前的资源 : RAII :异常安全( exception-safe ) C++ 标准保证当异常发生时,会调用已创建对象的解构函数 。 因此 C++ 中没有(也不需要) finally 语句。 如果此处不关闭,则可等 • 第一种是,你的 func() 实际上并不需要 “夺走”资源的占有权( ownership )。比如 刚才这个例子, func() 只是调用了 p 的 某个成员函数而已,并没有接过掌管对象 生命周期的大权。 解决方案 2 : unique_ptr 不能拷贝,但可以移动 • 第二种是,你的 func() 需要“夺走”资源的 占有权。比如右边这个例子, func 把指针 放到一个全局的列表里,0 码力 | 96 页 | 16.28 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 02 现代 C++ 入门:RAII 内存管理getter/setter 函数分离了声明和定 义,实现在另一个文件时! C++ 思想: RAII ( Resource Acquisition Is Initialization ) 资源获取视为初始化,反之,资源释放视为销毁 C++ 除了用于初始化的构造函数( constructor ) 还包括了用于销毁的解构函数( destructor ) 离开 {} 作用域自动释放 手动释放 RAII Python 等垃圾回收语言不同, C++ 的 解构函数是显式的,离开作用域自动销毁,毫不含 糊(有好处也有坏处,对高性能计算而言利大于 弊) 如果没有解构函数,则每个带有返回的分 支都要手动释放所有之前的资源 : RAII :异常安全( exception-safe ) C++ 标准保证当异常发生时,会调用已创建对象的解构函数 。 因此 C++ 中没有(也不需要) finally 语句。 如果此处不关闭,则可等 • 第一种是,你的 func() 实际上并不需要 “夺走”资源的占有权( ownership )。比如 刚才这个例子, func() 只是调用了 p 的 某个成员函数而已,并没有接过掌管对象 生命周期的大权。 解决方案 2 : unique_ptr 不能拷贝,但可以移动 • 第二种是,你的 func() 需要“夺走”资源的 占有权。比如右边这个例子, func 把指针 放到一个全局的列表里,0 码力 | 96 页 | 16.28 MB | 1 年前3
共 16 条
- 1
- 2













