0
我正在通過查看示例和現有練習來練習我的多圖,現在我很困惑。任何人都可以通過myMap.erase(iter-> second)在這裏告訴我什麼被擦除了嗎?Multimap - 關於.erase()函數的想法
multimap<int, int> myMap;
for (int i = 0; i < 3; i += 2)
myMap.insert(make_pair(i + 1, i * 2));
for (int i = 0; i < 5; i += 2)
myMap.insert(make_pair(i, i + 2));
multimap<int, int>::iterator iter = myMap.begin();
++iter;
++iter;
myMap.erase(iter->second);
++iter;
cout << iter->first << iter->second << endl;
到目前爲止我知道多集是(0,2),(1,0),(2,4),(3,4),(4,6)。但是,當我試圖在其他可能的迭代器位置打印對時,如果我只是在存在myMap.erase(iter->second)
行時增加迭代器,則不能再打印出來(4,6)。它給出了一個map/set迭代器不可忽略的錯誤。
究竟發生了什麼?實際上「擦除」了什麼?
所以它從字面上需要4(3,4),然後擦除「4」元素aka(4,6)?如果迭代器開啓(3,2),當它擦除iter-> second時,它會擦除第二個元素(1,0)? – BaloneyOs
不,這是錯誤的,請參閱我的編輯。 – acraig5075
啊,所以關鍵是這一對中的第一個元素。我嘗試擦除其他東西,並與此匹配。謝謝您的幫助! – BaloneyOs