我有一个带有 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);
}
}
当我使用 key 对象运行此代码时,2000001
我能够擦除正确的对象,但另一个带有 key 的对象1000017
也会被擦除。不过,这两个物体的频率相同。
知道我的 for 循环有什么问题吗?
编辑:为了清楚起见,我只想检查具有一个特定键的对象(在这种情况下2000001
),迭代器不需要查看具有不同键的对象。