72 #ifndef __FK_HEAP_BASE_HEADER__
73 #define __FK_HEAP_BASE_HEADER__
99 typedef std::vector<int>::size_type
_fk_h_s;
125 std::vector<TYPE *> array;
128 int Compare(TYPE *a, TYPE *b) {
129 if(*a < *b)
return -1;
130 if(*a > *b)
return 1;
134 int HeapData(TYPE *argData,
int argS,
int argE) {
142 array.insert(array.begin(), pData);
143 id.insert(
id.begin(), 1);
148 comp = Compare(argData, array[static_cast<_fk_h_s>(argS)]);
150 return id[
static_cast<_fk_h_s>(argS)];
156 array.insert(array.begin()+argS, pData);
157 id.insert(
id.begin()+argS,
158 static_cast<int>(array.size()));
160 array.insert(array.begin()+argS+1, pData);
161 id.insert(
id.begin()+argS+1,
162 static_cast<int>(array.size()));
164 return static_cast<int>(array.size());
167 if(argE - argS == 1) {
168 comp = Compare(argData,
169 array[static_cast<_fk_h_s>(argS)]);
172 return id[
static_cast<_fk_h_s>(argS)];
178 array.insert(array.begin()+argS, pData);
179 id.insert(
id.begin()+argS,
180 static_cast<int>(array.size()));
181 return static_cast<int>(array.size());
184 return HeapData(argData, argE, argE);
187 index = (argE-argS)/2 + argS;
189 comp = Compare(argData, array[static_cast<_fk_h_s>(index)]);
192 return id[
static_cast<_fk_h_s>(index)];
196 return HeapData(argData, argS, index);
200 return HeapData(argData, index, argE);
228 return static_cast<int>(array.size());
244 return HeapData(argV, 0,
getSize()-1);
249 for(
unsigned int i = 0; i < array.size(); i++) {
258 #endif // !__FK_HEAP_BASE_HEADER__
int getSize(void)
Definition: HeapBase.h:227
fk_HeapBase(void)
コンストラクタ
Definition: HeapBase.h:210
int getID(TYPE *argV)
Definition: HeapBase.h:243
重複要素に同一IDを与えるための汎用テンプレート
Definition: HeapBase.h:123
std::vector< int >::size_type _fk_h_s
重複要素に同一IDを与えるための汎用テンプレート
Definition: HeapBase.h:99
void clear(void)
初期化関数
Definition: HeapBase.h:248
virtual ~fk_HeapBase()
デストラクタ
Definition: HeapBase.h:213