为了分析用户使用应用程序的情况,程序的开发者常常需要收集数据,如一个用户在使用了多少次,有多少个用户注册了你的程序等等。
例如,如果你分析过去一个月你的网站日访问量。一般都是每天有100-200人访问,但是有两天,访问人数为2000。如果你不考虑这两天的异常情况,最终的平均访问量是290而不是150左右,这显然是不准确的。
你可以用metric_t< type>对给定类型数据进行收集进行异常数据处理。为了可以使用metric_t,需要把所有数据收集到一个容器中。然后创建一个metric_t对象,指定它的排除多少个最大/最小元素以及一个可选的判定(predicate)。
这个判定用来表明“最大值”和“最小值”的门限。当你计算一个文本文件中单词的平均包含多少个字母时,该判定应该来比较字符串的长度(而不是字符串本身)。如果没有提供该判定,你可以使用std::less< type>。
下面是如何建立metric_t对象:
metric( container, nExcludeLower, nExcludeUpper [,pred])::计算容器中数据的metric,不包括最小(nExcludeLower)元素和最大(nExcludeUpper)元素;它也用pred作为predicate来表明最小值/最大值的权重。
下面是你使用它的方法:本文的第二部分将详细介绍metric_t,并提供几个复杂一些的例子来演示如何使用metric_t对象。