AMX를 기반으로 SA-MP 용 플러그인을 작성 중이며 성가신 문제가 발생했습니다. deque 및 함수를 사용하여 & 요소를 삭제하려고합니다. (아래이 같은)std :: deque - subscript out of range
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
내가 읽고 수정할 요소를 추가 할 수 있지만, 내가 그들을 삭제할 수 없습니다.
감사합니다.
당신이하고있는 일은 그렇게 단순한 것으로 완전히 복잡해 보입니다. 'std :: find' +'deque :: erase' 또는 Erase-Remove Idiom의 더 나은 점은 무엇입니까? 또한,'delete'를 호출 할 필요가 없습니까? – pmr