《深入浅出MFC》2/eRC 编译器整合为一个完整的EXE 文件(图1-1)。所谓UI 资源是指功能菜单、对话框 外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各 种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓 的资源描述档(.rc)中描述它们。RC 编译器(RC.EXE)读取RC 档的描述后将所有UI 资源档集中制作出一个.RES 档 ionName,但没有 扩展名,系统并不会主动为你加上.EXE 扩展名;如果没有指定完整路径,系统就只在 目前工作目录中寻找。但如果你指定lpApplicationName 为NULL 的话,系统会以 lpCommandLine 的第一个「段落」(我的意思其实是术语中所谓的token)做为可执行档 档名;如果这个档名没有指定扩展名,就采用预设的".EXE" 扩展名;如果没有指定路 径,Windows Browser 提供这些【Funct i ons】项目供观察: Browser 提供这些【Dat a】项目供观察: Browser 系从一个特殊的数据库文件(.BSC)取得信息,此文件由Visual C++ 整合环境自 动产生,非常巨大。如果暂时你不想要这个数据库,可以把图4-5a 中的【Generate browse Info】选项清除掉。而当你需要它时,选择【Tools/Source Browse0 码力 | 1009 页 | 11.08 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理format 支持 跑远了! • 鉴于 C++20 还没有普遍落地(例如 CMake 不支持 C++20 modules )因此我们的课程 基于 C++17 标准,有时会谈到 C++20 作为扩展阅读。 C++ 有哪些面向对象思想? C++ 思想:封装 比如要表达一个数组,需要:起始地址指针 v ,数组大小 nv 将多个逻辑上相关的变量包装成一个类 因此 C++ 的 vector 将他俩打包起来,避免程序员犯错 因为疏忽大意造成的不必要拷贝。而当的 确需要拷贝时,也可以改成 Pig(pig) 语法 来强制拷贝。 为什么很多面向对象语言,比如 Java ,都没有构造函数全家桶这些概念? • 因为他们的业务需求大多是:打开数据库,增删改查学生数据,打开一个窗口,写入一个 文件,正则匹配是不是电邮地址,应答 HTTP 请求等。 • 这些业务往往都是在和资源打交道,从而基本都是刚刚说的要删除拷贝函数的那一类,解 决这种需求,几乎总是在用 ,才发展出了这些思 想,并将拷贝 / 移动 / 指针 / 可变性 / 多线程等概念作为语言基本元素存在。这些在我们的 业务里面是非常重要的,所以不可替代。 • (试图升华文章中心主旨) 扩展阅读关键字 • 限于篇幅,此处放出一些扩展知识供学有余力的同学研究: 1. P-IMPL 模式 2. 虚函数与纯虚函数 3. 拷贝如何作为虚函数 4. std::unique_ptr::release() 50 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串std::string 其实是同等 地位的。 • 虽然也可以给 std::string 定义很多个不同的 + 重载,每个针对不同的数字类 型( int 、 float 、 double )排列组合,但是这样没有可扩展性,而且影响编 译速度。 • 所以 cpp 说,你必须手动把 42 先转换为字符串,然后再和已有的字符串相 加: • “you have ” + std::to_string(42) + “ yuan” hex 选项。 • 但是他的输出会保存到一个字符串里。 • 调用成员函数 .str() 就能取出这个字符串了。 • 之后这个字符串就可以用作其他用途,比如 printf 打印,或者用于查询数据库,都没问题。 • 这里比较无聊,最后还是直接输出到了 cout 。 stringstream 也可以取代 stoi • 刚刚展示了 stringstream 模仿 cout 的方法。 • stringstream 以后是否超过容量,决定是否要扩容数组。 string 的 append 实现 • 在 compare 等函数涉及到 0 结尾字符串的版本,都会调用 char_traits 中的方法,方便用户通过模板扩展(性能上或功能上) 。 • 例如: basic_string。 char_traits 内函数的实现 Unicode 与宽字符 第 9 0 码力 | 162 页 | 40.20 MB | 1 年前3
Hello 算法 1.0.0b1 C++版长度无法扩展。而若 希望扩容数组,则需新建一个数组,然后把原数组元素依次拷贝到新数组,在数组很大的情况下,这是非常耗 时的。 4. 数组与链表 hello‑algo.com 46 // === File: array.cpp === /* 扩展数组长度 */ int* extend(int* nums, int size, int enlarge) { // 初始化一个扩展长度后的数组 将原数组中的所有元素复制到新数组 for (int i = 0; i < size; i++) { res[i] = nums[i]; } // 释放内存 delete[] nums; // 返回扩展后的新数组 return res; } 数组中插入或删除元素效率低下。如果我们想要在数组中间插入一个元素,由于数组元素在内存中是“紧挨着 的”,它们之间没有空间再放任何数据。因此,我们不得不 哈希表通过建立「键 key」和「值 value」之间的映射,实现高效的元素查找。具体地,输入一个 key ,在哈 希表中查询并获取 value ,时间复杂度为 ?(1) 。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id ”两项数据,希望实现一个查 询功能:输入一个学号,返回对应的姓名,则可以使用哈希表实现。 Figure 6‑1. 哈希表的抽象表示 6.1.1.0 码力 | 187 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 C++版长度无法扩展。而若 希望扩容数组,则需新建一个数组,然后把原数组元素依次拷贝到新数组,在数组很大的情况下,这是非常耗 时的。 4. 数组与链表 hello‑algo.com 46 // === File: array.cpp === /* 扩展数组长度 */ int* extend(int* nums, int size, int enlarge) { // 初始化一个扩展长度后的数组 将原数组中的所有元素复制到新数组 for (int i = 0; i < size; i++) { res[i] = nums[i]; } // 释放内存 delete[] nums; // 返回扩展后的新数组 return res; } 数组中插入或删除元素效率低下。如果我们想要在数组中间插入一个元素,由于数组元素在内存中是“紧挨着 的”,它们之间没有空间再放任何数据。因此,我们不得不 哈希表通过建立「键 key」和「值 value」之间的映射,实现高效的元素查找。具体地,输入一个 key ,在哈 希表中查询并获取 value ,时间复杂度为 ?(1) 。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id ”两项数据,希望实现一个查 询功能:输入一个学号,返回对应的姓名,则可以使用哈希表实现。 Figure 6‑1. 哈希表的抽象表示 6.1.1.0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 C++版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 符号,以及一些控制字符(如换行符和制表符)。 Figure 3‑6. ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。在世界范围内,陆续出现了一批适用于 不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应 用的就有几千个。中国国家标准总局于 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满 足了汉字的计算机处理需要。 然而,GB2312 无法处理部分的罕见字和繁体字。之后在 GB2312 的基础上,扩展得到了「GBK」字符集,它 共收录了 21886 个汉字。在 GBK 编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3. 数据结构 hello‑algo.com 46 30 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C++ 版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 第 3 章 数据结构 hello‑algo.com 61 3.4.30 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 (如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足了汉 字的计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收录 了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 第 3 章 数据结构 hello‑algo.com 61 3.4.30 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 C++版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足 了汉字的计算机处理需要。 然而,GB2312 无法处理部分的罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收 录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 第 3 章 数据结构 hello‑algo.com 59 3.4.30 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 第 3 章 数据结构 www.hello‑algo.com 61 30 码力 | 379 页 | 18.48 MB | 10 月前3
共 17 条
- 1
- 2













