我正在尝试遍历我的多重映射中的每个元素,但由于某种原因,它在遍历前两个元素后停止工作。
这是我用来迭代的代码:
for(noteIT = trackIT->noteList.begin(); noteIT != trackIT->noteList.end(); noteIT++){
cout << "noteList size is: " << (int) trackIT->noteList.size() << endl;
cout << "---" << noteIT->second.getName() << endl;
}
这是我得到的输出:
noteList size is: 3
---note1
noteList size is: 3
---note2
但是我的多重地图中有两个以上的元素,我在这里添加它们:
// create notes
Note note1(440, 100, 8, 1, 1);
note1.setName("note1");
Note note2(220, 100, 8, 1, 9);
note2.setName("note2");
Note note3(880, 100, 8, 1, 17);
note3.setName("note3");
synthTrack.addNote(note1);
synthTrack.addNote(note2);
synthTrack.addNote(note3);
这是 addNote 方法的样子:
void Track::addNote(Note ¬e) {
// long key = note.getMeasureNumber() * 1000000 + note.getStartTime();
long key = 1000009;
this->noteList.insert(make_pair(key, note));
}
多图可以多次使用相同的键,因此现在每个键都是相等的,但这无关紧要。有什么想法我可能做错了吗?
编辑
这是一个正在运行的示例。遗憾的是,这个示例按原样工作,并显示了添加到 noteList 的三个注释。然而,上面的代码不起作用,我不知道为什么。