マルチマップのすべての要素を繰り返し処理しようとしていますが、何らかの理由で最初の 2 つの要素を超えると機能しなくなります。
これは、反復に使用しているコードです。
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
しかし、マルチマップ内に 2 つ以上の要素があるため、ここに追加します。
// 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 に追加された 3 つのメモを示しています。ただし、上記のコードは機能せず、その理由はわかりません。