template<typename T>
int EraseRate(T &tArray[],T tRate){
int tCount=ArraySize(tArray),
tRes=tCount;
for (int i=0,ii=0;i+ii<tCount;i++){
if (ii) tArray[i]=tArray[i+ii];
while (tArray[i]==tRate&&i+ii<tCount){
if (i+(++ii)<tCount) tArray[i]=tArray[i+ii];
tRes--;}}
return(ArrayResize(tArray,tRes));}
template<typename T>
int EraseRate(T &tArray[],T tRate){
int tCount=ArraySize(tArray),
tDelCount=0;
for (int i=0,tNext=0;tNext<tCount;i++,tNext++){
if (tDelCount) tArray[i]=tArray[tNext];
while (tArray[i]==tRate&&tNext<tCount){
if (++tNext<tCount) tArray[i]=tArray[tNext];
tDelCount++;}}
return(ArrayResize(tArray,tCount-tDelCount));}
ある関数が普遍的であるためには、入力データに合わせた複数の異なるアルゴリズムを組み合わせる必要があると思います。
勿論
クイックハッシュキットのやり方がやっとわかりました。
OK、2次元配列 例:[13][12]。7行目を削除し、残りの行を変更しない方法は?
こんな感じ
最適化後。
Nicholi Shenの コードを少し修正しました。
これで問題の条件を満たし、int型配列に対して動作するようになりました。フィルターサイズFが最低でも6になることを考慮すると、これが最速の選択肢だと思います。