C++ 一次遍历的方案

2023-03-20 16:02 更新

虽然上面的函数可以完成指定工作,但是它的效率比较低。每一次调用howMany函数时它都要将整个数据内容遍历一次。在下面的程序中,我们需要将数据遍历十次。

我们要设计一个函数,使其将数据遍历一边就能完成工作。对数据中的每一个值,我们可以将其对应的计数存储点找出,并将其自增一。换句话说,我们使用向量中的值作为直方图的下标。下面是对应方法设计的程序:

apvector<int> histogram (upperBound, 0);

for (int i = 0; i<numValues; i++) {
    int index = vector[i];
    histogram[index]++;
}

第一行对统计值进行初始化直方图的值为0。通过这样,我们就可以在循环体里通过++操作符进行对直方图增长。我们知道我们让它会从0开始。而忘记初始化计数器是一个常见的错误。

作为一练习,可以将以上的代码封装设计好,组合成一histogram函数,输入一个向量并统计值范围(这里是0到10),返回值就是向量中的统计直方图。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号