我想每一個元素遍歷在我的多重映射,但由於某種原因,它停止工作,它會比前兩個元素之後。多重映射只顯示了兩個第一要素
這是我使用迭代代碼:
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));
}
一個multimap可以有幾次相同的密鑰,所以現在每個密鑰都是平等的,但這應該不重要。任何想法我可能做錯了什麼?
編輯
Here's a running example。可悲的是,這個例子按照它應該的方式工作,並顯示了添加到noteList的三個註釋。上面的代碼不起作用,我不知道爲什麼。
如果您發佈了一個最小的完整示例,我們將有更好的機會。 – Beta 2012-04-24 00:35:49
特別是,這將是很好看的多重映射模板參數,和'運營商你'Note'定義<'函數.... – 2012-04-24 00:44:43
沒有'運營商<'功能,因爲我不需要多重映射爲訂購。我將添加一個工作示例 – networkprofile 2012-04-24 00:52:42