У меня есть мульти-карта с объектами Note, из которых я хочу удалить только один объект. Может быть несколько объектов Note с одним и тем же ключом. Проблема в том, что прямо сейчас удаляются также объекты, которые не входят в указанный мной диапазон ключей:
long key = note.measureNumber * 1000000 + note.startTime; // = 2000001
multimap<long, Note>::iterator it;
for (it = noteList.lower_bound(key); it != noteList.end() && it->first < (key + 1); it++) {
if(it->second.frequency == note.frequency){
noteList.erase(it);
}
}
Когда я запускаю этот код с ключом 2000001
объект, я могу стереть нужный объект, но другой объект с ключом 1000017
также удаляется. Однако оба объекта имеют одинаковую частоту.
Есть идеи, что не так с моим циклом for?
РЕДАКТИРОВАТЬ: Для ясности, я хочу проверять только объекты с одним конкретным ключом (в данном случае 2000001
), итератору нет необходимости просматривать объекты с разными ключами, кроме этого.