寻找解决这类问题的方法,首先可以从设计一些功能简单易运行的函数入手,每一个成功运行的简单函数对于解题都是有帮助的。一步步的设计,最后综合起来得到解决问题的方法。这就是所说的自底向上的程序设计方法。当然,想预先知道哪些函数对于程序设计有帮助,对于初学者来说还是比较困难的,随着经验的积累到一定的程度,你才会得心应手。
同样,由于经验的缺失,有时候我们并不能知道到底要写什么样的函数,这时我们就需要找到程序中有过类似解决经验的子问题,先把它们解决。
在7.9里,我们介绍了一个可以从一串字符中统计给定字符出现次数的函数。我们可以把这个函数作为一个“遍历和计数”的模型。这个模型的主要构成元素有:
一个可遍历的集合或容器,类似于字符串或向量。
一个可以应用到每个元素用于测试的语句。
在这里,我预先准备了一个叫做“howMany”的函数,用以统计向量中等于给定数值的数出现的次数。所需要的参数就只有向量值和给定整数的值。函数的返回值就是给定整数值出现的次数。
int howMany (const apvector<int>& vec, int value) {
int count = 0;
for (int i=0; i< vec.length(); i++) {
if (vec[i] == value) count++;
}
return count;
}