36 #ifndef ARRAYREUSE_OBJECT_H
37 #define ARRAYREUSE_OBJECT_H
83 int arraysAddedPerAlloc;
89 int initArraysAddedPerAlloc;
117 store.push_back(
new T [count * arrayLength]);
118 for (
int i = 0; i < count; ++i)
119 refStore.push_back(&store.back()[i * arrayLength]);
121 allocArrays += count;
130 for (
int i = 0; i < (int) store.size(); ++i)
delete [] store[i];
156 initialize(alngth, acnt, acnt, 8, acnt + acnt);
176 initialize(alngth, iacnt, acnt, 8, iacnt + acnt);
201 int rsrvstr,
int rsrvrefstr)
203 initialize(alngth, iacnt, acnt, rsrvstr, rsrvrefstr);
217 if (refStore.size() == 0) add(arraysAddedPerAlloc);
219 T* a = refStore.back();
240 for (
int i = 0; i < (int) store.size(); ++i)
242 j < ((i == 0) ? initArraysAddedPerAlloc : arraysAddedPerAlloc); ++j)
244 refStore.push_back(&store[i][j * arrayLength]);
252 void resetIfRequired()
254 if ((
int) refStore.size() != allocArrays) reset();
272 void initialize(
int alngth,
int acnt)
274 initialize(alngth, acnt, acnt, 8, acnt + acnt);
294 void initialize(
int alngth,
int iacnt,
int acnt)
296 initialize(alngth, iacnt, acnt, 8, iacnt + acnt);
320 void initialize(
int alngth,
int iacnt,
int acnt,
321 int rsrvstr,
int rsrvrefstr)
329 arrayLength = alngth;
330 arraysAddedPerAlloc = acnt;
331 initArraysAddedPerAlloc = iacnt;
332 store.reserve(rsrvstr);
333 refStore.reserve(rsrvrefstr);
345 int getUsedArrayCount()
const
347 return allocArrays - (int) refStore.size();
353 int getUnusedArrayCount()
const
355 return (
int) refStore.size();
367 #endif // ARRAYREUSE_OBJECT_H