Есть много важных различий между multimap<x, y>
и map<x, vector<y>>
. После того, как вы вставили значение в multimap , вы знаете, что итератор останется действительным, пока вы не удалите его иэто очень сильное свойство, его нельзя использовать с картой векторов.
multimap<x,y>::iterator p=mymap.insert(make_pair(a,b));
Итератор остается действительным до тех пор, пока он не будет удален с карты, тогда как во втором случае он будет аннулирован при каждом добавленииновая запись в векторе.
Также обратите внимание, что map<x, vector<y>>
может иметь пустое значение, установленное с существующим ключом, в то время как multimap нет.
Это разные вещи, которые ведут себя по-разному.
И, если честно, я пропускаю мультикарту в некоторых языках, которые не предоставляют ее в своей библиотеке.