Имеется такой код:
vector<Query> queries;
...
channels.push_back(Query(i));
...
queries.erase(remove_if(queries.begin(), queries.end(), IsEnded), queries.end());
IsEnded:
bool IsEnded(const Query &aVar)
{
bool ok = false;
if (aVar.id==-1)
ok = true;
return ok;
}
Проблема в том, что после удаления происходит что-то непонятное. При добавлении нового элемента никаких ошибок не выдается, но при передаче этого элемента по ссылке все поля объекта теряются:
void servBegin(Query &que) {
cout << " #" << que.id << endl;
}
Выводит #0.
Передача осуществляется в цикле так:
for(i=0;i<n;i++) {
if(channels[i].isFree() && queries[k-1].chn_num < L) {
channels[i].servBegin(queries[k-1]);
}
}
Возможно, косяк именно из-за цикла?
До удаления все работает прекрасно. Как исправить?
Буду очень благодарен за простенький пример с удалением и последующим добавлением элемента в вектор.