codecamp

C++ 直方图

从之前的数据表取出并存储,在使用时可以直接调用,这个方法通常很有用,也比直接将数值打印出来要好。我们需要一个将十个整型数存储起来的方法。当然,我们可以定义十个整型变量,分别取名为howManyones,howManytows等,但是那样的话工作太过繁杂。而且当我们需要改变统计的数值个数时将很会麻烦。

因此,最好是使用一个长度为10的整型指针。这样的话,我们就可以一次完成十个整数值存储点的设置,并且可以使用数组索引到每个数值。程序如下:

int numValues = 100000;
int upperBound = 10;
apvector<int> vector = randomVector (numValues, upperBound);
apvector<int> histogram (upperBound);

for (int i = 0; i<upperBound; i++) {
    int count = howMany (vector, i);
    histogram[i] = count;
}

我把这个程序称作直方图,因为这是一个统计学上的名词,专门为向量中统计不同数值出现的次数而设计的。

这里一个很巧妙的地方是,循环变量在函数中得到了两次不同功能的使用。首先,它是howMany函数的参数,这正是我们想要统计的值。其次,它是向量统计图的索引值,将每个统计值存入对应存储点中。

C++ 检查其他值
C++ 一次遍历的方案
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }