⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smplhist.cc

📁 早期freebsd实现
💻 CC
字号:
// This may look like C code, but it is really -*- C++ -*-/* Copyright (C) 1988 Free Software Foundation    written by Dirk Grunwald (grunwald@cs.uiuc.edu)This file is part of the GNU C++ Library.  This library is freesoftware; you can redistribute it and/or modify it under the terms ofthe GNU Library General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at youroption) any later version.  This library is distributed in the hopethat it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE.  See the GNU Library General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifdef __GNUG__#pragma implementation#endif#include <stream.h>#include <SmplHist.h>#include <math.h>#ifndef HUGE_VAL#ifdef HUGE#define HUGE_VAL HUGE#else#include <float.h>#define HUGE_VAL DBL_MAX#endif#endifconst int SampleHistogramMinimum = -2;const int SampleHistogramMaximum = -1;SampleHistogram::SampleHistogram(double low, double high, double width){    if (high < low) {	double t = high;	high = low;	low = t;    }    if (width == -1) {	width = (high - low) / 10;    }    howManyBuckets = int((high - low) / width) + 2;    bucketCount = new int[howManyBuckets];    bucketLimit = new double[howManyBuckets];    double lim = low;    for (int i = 0; i < howManyBuckets; i++) {	bucketCount[i] = 0;	bucketLimit[i] = lim;	lim += width;    }    bucketLimit[howManyBuckets-1] = HUGE_VAL;	/* from math.h */}SampleHistogram::~SampleHistogram(){    if (howManyBuckets > 0) {	delete bucketCount;	delete bucketLimit;    }}voidSampleHistogram::operator+=(double value){    int i;    for (i = 0; i < howManyBuckets; i++) {	if (value < bucketLimit[i]) break;    }    bucketCount[i]++;    this->SampleStatistic::operator+=(value);}intSampleHistogram::similarSamples(double d){    int i;    for (i = 0; i < howManyBuckets; i++) {	if (d < bucketLimit[i]) return(bucketCount[i]);    }    return(0);}voidSampleHistogram::printBuckets(ostream& s){    for(int i = 0; i < howManyBuckets; i++) {	if (bucketLimit[i] >= HUGE_VAL) {	    s << "< max : " << bucketCount[i] << "\n";	} else {	    s << "< " << bucketLimit[i] << " : " << bucketCount[i] << "\n";	}    }}voidSampleHistogram::reset(){    this->SampleStatistic::reset();    if (howManyBuckets > 0) {	for (register int i = 0; i < howManyBuckets; i++) {	    bucketCount[i] = 0;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -