August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
为了使Month的>>能正常工作,我们需要提供一个方法,来读入月份的符号表示。相似地,我们将用符号表示提供匹配的写。一种冗长的表示方法是使用if语句:
这种方法不仅冗长,而且将月份名固化到了程序中。更好的方法是将月份名存入一个表中,使得即便不得不改变符号表示时,也无须改动主程序。我们决定用一个vector<string>来描述月份的符号表示,另外设计一个初始化函数和一个查找函数。
为了避免疑惑,C++标准库提供了一种简单的方法来完成相同的工作,参见16.6.1节中map<string.int>的相关内容。
当需要进行输出时,我们将面临一个逆问题。我们在内存中用一个整数表示月份,但输出时希望用符号表示形式。解决方案与输入基本相似,只是把string到int的映射表变为int到string的映射表:
好了,你是否真正阅读了全部代码和注释了呢?还是眼睛一眨就跳到末尾了?谨记学习编写高质量代码的最好途径就是阅读大量代码。不管你信不信,本例中我们使用的方法虽很简单,但在没有帮助的情况下领悟其精髓并不容易。读取数据是很基本的,正确编写输入循环(正确初始化用到的变量)是很基本的,转换表示方式也很基本。也就是说,你应该学会这些。唯一的问题是,你是否能学会很好地使用这些技术,以及是否在熬夜之前学会这些基本的技术。 ...