Histogram is basically a double array, but it contains some useful methods and meta information, which makes it a perfect data structure to store information about frequencies of numeric values, e.g. frequency of image pixel values.

class Histogram : public Array< double >
	float domainStart;
	float binSize;

    Histogram(float start, float end, float size);
	Histogram(float start, float size, int count);
	Histogram(float start, float size, void* data, int count);
	int				Size() const;
	void			Reserve( int newCapacity );
	double*			Begin();
	double*			End();
	const double*	Begin();
	const double*	End();
	float			DomainStart() const;
	void			SetDomainStart(float begin);
	void			SetDomainStartOf(const avl::Histogram& other);
	float			BinSize()	const;
	void			SetBinSize(float newBinSize);
	void			SetBinSizeOf(const avl::Histogram& other);
	int				BinCount() const;
	void			SetBinCount(int newBinCount);
	void			SetBinCountOf(const avl::Histogram& other);
	float			DomainLength() const;
	float			DomainEnd() const;