42 void KeepBests::init()
46 ctable=(
cell*)malloc(n*
sizeof(
cell));
47 if (optionalN) t=(
double*)malloc(optionalN*n*
sizeof(
double));
49 std::cerr <<
"Error while allocating memory" << std::endl;
60 ctable[
i].
prev=ctable+(i-1);
64 _local_getOptValueI=-1;
71 if (optionalN) t=(
double*)realloc(ctable[0].optValue,_optionalN*n*
sizeof(
double));
72 else t=(
double*)malloc(_optionalN*n*
sizeof(
double));
74 std::cerr <<
"Error while allocating memory" << std::endl;
87 if (optionalN)
free(ctable[0].optValue);
94 for (i=0; i<n; i++) ctable[i].
K=
INF;
100 add(key,value,NULL,0);
104 add(key,value,&optionalValue,1);
109 add(key,value,optionalValue,optionalN);
114 cell *t=end, *prev, *t_next=NULL;
115 while ((t)&&(t->
K>key)) { t_next=t; t=t->
prev; };
122 if ((optionalN)&&(optionalValue))
124 memcpy(end->
optValue, optionalValue, nn*
sizeof(
double));
126 memset(end->
optValue+nn,0,(optionalN-nn)*
sizeof(
double));
136 if ((optionalN)&&(optionalValue))
138 memcpy(end->
optValue, optionalValue, nn*
sizeof(
double));
140 memset(end->
optValue+nn,0,(optionalN-nn)*
sizeof(
double));
151 while (i) { t=t->
prev; i--; }
159 while (i) { t=t->
prev; i--; }
165 if (i==_local_getOptValueI)
return _local_getOptValueC->
optValue[no];
166 _local_getOptValueI=
i;
169 while (i) { t=t->
prev; i--; }
170 _local_getOptValueC=t;
178 while (i) { t=t->
prev; i--; }
void add(double key, double value)
double getOptValue(int i, int n)
void setOptionalN(int optinalN)