Wm4TMinHeap.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef WM4TMINHEAP_H
00018 #define WM4TMINHEAP_H
00019
00020 #include "Wm4System.h"
00021
00022 namespace Wm4
00023 {
00024
00025 template <typename Generator, typename Real> class TMinHeap;
00026
00027 template <typename Generator, typename Real>
00028 class TMinHeapRecord
00029 {
00030 public:
00031 TMinHeapRecord ();
00032 ~TMinHeapRecord ();
00033
00034 Generator GetGenerator () const;
00035 Real GetValue () const;
00036
00037 private:
00038 friend class TMinHeap<Generator,Real>;
00039
00040 Generator m_tGenerator;
00041 Real m_fValue;
00042 int m_iIndex;
00043 };
00044
00045 template <typename Generator, typename Real>
00046 class TMinHeap
00047 {
00048 public:
00049 TMinHeap (int iMaxQuantity, int iGrowBy);
00050 ~TMinHeap ();
00051
00052
00053 int GetMaxQuantity () const;
00054 int GetGrowBy () const;
00055 int GetQuantity () const;
00056 const TMinHeapRecord<Generator,Real>* GetRecord (int i) const;
00057
00058
00059
00060
00061 const TMinHeapRecord<Generator,Real>* Insert (Generator tGenerator,
00062 Real fValue);
00063
00064
00065
00066
00067 void Remove (Generator& rtGenerator, Real& rfValue);
00068
00069
00070
00071
00072 void Update (const TMinHeapRecord<Generator,Real>* pkConstRecord,
00073 Real fValue);
00074
00075
00076
00077
00078 bool IsValid (int iStart, int iFinal);
00079 bool IsValid ();
00080 void Print (const char* acFilename);
00081
00082 private:
00083
00084 int m_iMaxQuantity, m_iGrowBy, m_iQuantity;
00085 TMinHeapRecord<Generator,Real>* m_akRecords;
00086
00087
00088
00089
00090 TMinHeapRecord<Generator,Real>** m_apkRecords;
00091 };
00092
00093 }
00094
00095 #include "Wm4TMinHeap.inl"
00096
00097 #endif