企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
虽然上面的函数可以完成指定工作,但是它的效率比较低。每一次调用howMany函数时它都要将整个数据内容遍历一次。在下面的程序中,我们需要将数据遍历十次。 我们要设计一个函数,使其将数据遍历一边就能完成工作。对数据中的每一个值,我们可以将其对应的计数存储点找出,并将其自增一。换句话说,我们使用向量中的值作为直方图的下标。下面是对应方法设计的程序: ~~~ apvector<int> histogram (upperBound, 0); for (int i = 0; i<numValues; i++) { int index = vector[i]; histogram[index]++; } ~~~ 第一行对统计值进行初始化直方图的值为0。通过这样,我们就可以在循环体里通过++操作符进行对直方图增长。我们知道我们让它会从0开始。而忘记初始化计数器是一个常见的错误。 作为一练习,可以将以上的代码封装设计好,组合成一histogram函数,输入一个向量并统计值范围(这里是0到10),返回值就是向量中的统计直方图。