AMXをベースにしたSA-MPのプラグインを書いていますが、厄介な問題が発生しました。要素を検索して削除するために、両端キューと関数を使用しています。(以下のように)
enum PARAM_TYPE {
PARAM_TYPE_CELL,
PARAM_TYPE_ARRAY,
PARAM_TYPE_STRING,
};
struct params_s {
enum PARAM_TYPE type;
struct params_s * next;
cell free;
cell numData;
cell arrayData[0];
};
struct timer_s {
AMX * amx;
int id, func, interval, repeat;
long long unsigned int trigger;
struct params_s * params;
};
std::deque<struct timer_s *> gTimers;
void DestroyTimer(struct timer_s * t) {
for (int i = 0; i != gTimers.size(); ++i) {
if (t == gTimers[i]) {
gTimers.erase(gTimers.begin() + i);
break;
}
}
}
DestroyTimer()を呼び出すと、次のエラーが発生します。
Debug Assertion Failed!
Expression: deque subscript out of range
要素を追加したり、読み取ったり、変更したりすることはできますが、削除することはできません。
ありがとうございました。