Hello 算法 1.1.0 C++ 版在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 思路称为“以空间换时间”;反之,则称为“以时间换空间”。 选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此“以空间换时间”通 常是更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也非常重要。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 70 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 「迭代 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 思路称为“以空间换时间”;反之,则称为“以时间换空间”。 选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此“以空间换时间”通 常是更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也非常重要。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 国标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不 同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符 (如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 70 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 C++版在数据结构与算法中,重复执行某个任务是很常见的,其与算法的复杂度密切相关。而要重复执行某个任务, 我们通常会选用两种基本的程序结构:迭代和递归。 2.2.1 迭代 「迭代 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合预先知道迭代次数时使用。 以下函数基于 for 思路称为“以空间换时间”;反之,则称为“以时间换空间”。 选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此“以空间换时间”通 常是更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也是非常重要的。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 用 7 位二进制数(即一个字节的 低 7 位)表示一个字符,最多能够表示 128 个不同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、 数字 0 ~ 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 的 7 位基础上扩展到0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 思路称为“以空间换时间”;反之,则称为“以时间换空间”。 选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此“以空间换时间”通 常是更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也非常重要。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 70 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b4 C++版思路称为“以空间换时间”;反之,则称为“以时间换空间”。 选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此以空间换时间通常是 更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也是非常重要的。 2.4. 小结 算法效率评估 2. 复杂度 hello‑algo.com 35 ‧ 时间效率和空间效率是评价算法性能的两个关键维度。 ‧ 我们可以通过实际测试来 码」是最早出现的字符集,全称为“美国标准信息交换代码”。它使用 7 位二进制数(即一个字节的 低 7 位)表示一个字符,最多能够表示 128 个不同的字符。这包括英文字母的大小写、数字 0‑9 、一些标点 符号,以及一些控制字符(如换行符和制表符)。 Figure 3‑6. ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 使用一种灵活的字符串表示,存储的字符长度取决于字符串中最大的 Unicode 码点。对于全 部是 ASCII 字符的字符串,每个字符占用 1 个字节;如果字符串中包含的字符超出了 ASCII 范围,但 全部在基本多语言平面(BMP)内,每个字符占用 2 个字节;如果字符串中有超出 BMP 的字符,那么 每个字符占用 4 个字节。 ‧ Go 语言的 string 类型在内部使用 UTF‑8 编码。Go 语言还提供了0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C++ 版在演算法中,重複執行某個任務是很常見的,它與複雜度分析息息相關。因此,在介紹時間複雜度和空間複 雜度之前,我們先來了解如何在程式中實現重複執行任務,即兩種基本的程式控制結構:迭代、遞迴。 2.2.1 迭代 迭代(iteration)是一種重複執行某個任務的控制結構。在迭代中,程式會在滿足一定的條件下重複執行某段 程式碼,直到這個條件不再滿足。 1. for 迴圈 for 迴圈是最常見的迭代形式之一,適合在預先知道迭代次數時使用。 度的思路稱為“以空間換時間”;反之,則稱為“以時間換空間”。 選擇哪種思路取決於我們更看重哪個方面。在大多數情況下,時間比空間更寶貴,因此“以空間換時間”通 常是更常用的策略。當然,在資料量很大的情況下,控制空間複雜度也非常重要。 2.5 小結 1. 重點回顧 演算法效率評估 ‧ 時間效率和空間效率是衡量演算法優劣的兩個主要評價指標。 ‧ 我們可以透過實際測試來評估演算法效率,但難以消除測試環境的影響,且會耗費大量計算資源。 標準資訊交換程式碼)。它使用 7 位二進位制數(一個位元組的低 7 位)表示一個字元,最多能夠表示 128 個 不同的字元。如圖 3‑6 所示,ASCII 碼包括英文字母的大小寫、數字 0 ~ 9、一些標點符號,以及一些控制字 元(如換行符和製表符)。 圖 3‑6 ASCII 碼 然而,ASCII 碼僅能夠表示英文。隨著計算機的全球化,誕生了一種能夠表示更多語言的 EASCII 字符集。它 在 ASCII 的 70 码力 | 379 页 | 18.79 MB | 10 月前3
《深入浅出MFC》2/eWorker Thread / 759 產生㆒個 UI Thread / 761 執行緒的結束 / 763 執行緒與同步控制 / 763 MFC 多緒程式實例 / 766 目 錄 25 * 第 15 章 定製㆒個 AppWizard / 771 到底 Wizard 是什麼? / C++ 类別) window focus 窗口焦点(拥有焦点之窗口,将可获得键盘输入) 以下是本书使用之中英文名词对照表: 控制组件,如 拖放(鼠标左键按下,选中图标后拖动,然后放开) 图标(窗口缩小化后的小图样) 串行 列表框、列表清单 通告消息(发生于控制组件) 强制性、先占式、优先权式 进程(一个执行起来的程序) 队列 template C++ 有所谓的class template,一般译为类别模板; d 增设对 话盒处理函数,以及如何以MFC 提供的DDX/DDV 机制做出对话框控制组件 (control)的内容传递与内容查核。DDX(Dialog Data eXchange)的目的在简化应用 程序取得控制组件内容的过程,DDV(Dialog Data Validation)的目的则在加强应用 程序对控制组件内容之数值合理化检查。 Scribble Step4-加强显示能力- 滚动条与分裂窗口(第110 码力 | 1009 页 | 11.08 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串类特殊的控制字符 (control character) : • 0 表示空字符(‘ \0’ ) • 9 表示 Tab 制表符(‘ \t’ ) • 10 表示换行(‘ \n’ ) • 13 表示回车(‘ \r’ ) • 27 表示 ESC 键(‘ \x1b’ ) • 127 表示 DEL 键(‘ \x7f’ )等 • 0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。 码中控制字符的部分。 关于控制字符的一个冷知识 • 在 Linux 命令行中启动 cat 。 • 试试按 Ctrl+R , Ctrl+E , Ctrl+C 等一系列 组合键,看到出现了什么? • 可以看到显示的字符变成了 ^R ^E ^C 等… … • 这是 Unix 类系统显示控制字符的一种方式 。 • 众所周知,我们常用 Ctrl+C 来发送中断信号 ( SIGINT )强制终止程序,这时常常会看到 )强制终止程序,这时常常会看到 一个 ^C 的字样,就是这样出现的。这里我 们的 cat 程序收到 ^C 以后,就直接终止退 出了。 关于控制字符的一个冷知识 • 除此之外,因为 ^D 是“传输终止符”,还可以在控制 台输入 Ctrl+D 来关闭标准输入流,终止正在读取他 的程序。 • 小彭老师常用 Ctrl+D 来快速关闭一个 shell (和输入 exit 命令的效果一样)。 • 以及按 Ctrl+I 的效果其实和0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理// 拷贝赋值 • 追求性能时推荐用拷贝构造,因为可以避免一次无参构造,拷贝赋值是出于需要临时修改 对象的灵活性需要。 • 这个函数同样可以由 = delete 和 = default 控制是否默认生成。 • 注: return *this 是为了支持连等号 a = b = c; 编译器自动生成的函数:全家桶 • 其实,除了拷贝构造和拷贝赋值,编译器会自动生成的特殊函数还有这些: 请根据你的具体情况,决定要选用哪一种 解决方案。 移交控制权后仍希望访问到 p 指向的对象 • 解决方案 2 中,有时候我们会遇到移交控 制权后,仍希望访问到对象的需求。 • 如果还是用 p 去访问的话,因为被移动构 造函数转移了, p 已经变成空指针,从而 出错。 解决方案:提前获取原始指针 • 最简单的办法是,在移交控制权给 func 前,提前通过 p.get() 获取原始指针: int> ),则其实可以按值传递: • glm::vec3 calculateGravityAt(glm::vec3 pos); • 如果是智能指针(比如 shared_ptr ),且需要生命周期控制权,则按值传递: • void addObject(std::shared_ptr0 码力 | 96 页 | 16.28 MB | 1 年前3
现代C++ 教程:高速上手C++11/14/17/20decltype(auto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4 控制流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 GCC/Clang 等编译器中的支持情况 • C++98 与 C99 之间的区别 11 第 2 章语言可用性的强化 第 2 章语言可用性的强化 当我们声明、定义一个变量或者常量,对代码进行流程控制、面向对象的功能、模板编程等这些都 是运行时之前,可能发生在编写代码或编译器编译代码时的行为。为此,我们通常谈及语言可用性,是 指那些发生在运行时之前的语言行为。 2.1 常量 nullptr return lookup1(); } decltype(auto) look_up_a_string_2() { return lookup2(); } 22 2.4 控制流 第 2 章语言可用性的强化 2.4 控制流 if constexpr 正如本章开头出,我们知道了 C++11 引入了 constexpr 关键字,它将表达式或函数编译为常量结 果。一个很自然的想法是,如果我们把0 码力 | 83 页 | 2.42 MB | 1 年前3
共 17 条
- 1
- 2













