Мне нужно добавить, сохранить и удалить некоторые пары объектов, например. Person
-Hobby
. У каждого человека может быть несколько увлечений, а у нескольких людей может быть одно и то же хобби. Итак, multimap — хороший контейнер, верно?
Перед добавлением пары мне нужно знать, если она еще не добавлена. Как я вижу, здесь нет стандартного метода класса, чтобы знать, если конкретный пара, например Peter-Football
существует в ММ. Таким образом, я написал метод, который возвращает положительное целое число (равное расстоянию между mm.begin() и итератором пары), если пара существует, и -1
в противном случае.
Затем мне нужно удалить пару. Я вызываю свой метод find
, который возвращает некоторое положительное целое число. Звоню myMultiMap.erase(pairIndex);
но пара почему-то не удаляется. Это моя проблема. Очевидно, что метод erase
нуждается в iterator
, а не в int
. Вопрос: как мне преобразовать целое число в итератор?
Спасибо!
ОБНОВЛЕНИЕ: я пробовал это c.begin() + int_value
, но получил ошибку error: no match for ‘operator+’
в этой строке....
find
предположительно использует итераторы, чтобы выяснить, существует ли элемент; просто используйте этот итератор, если он найден. - person tmpearce   schedule 08.10.2012std::set<std::pair<Person, Hobby>>
не будет более подходящим контейнером? - person Kerrek SB   schedule 08.10.2012