Мое приложение объединяет два std::map
экземпляра.Если дубликатов нет, объединение завершается без вмешательства.Однако, если обнаружен дубликат, метод спрашивает, следует ли игнорировать новое значение или перезаписать его.(На этот запрос может ответить таблица правил, окно сообщения для пользователя или какая-то другая логика ... это просто экземпляр класса, производного от чисто виртуального класса с методом bool confirm() const
.)
Если вставка не удалась, и они решили перезаписать существующую запись, у меня уже есть итератор, указывающий на правильный элемент для обновления.Могу ли я использовать этот итератор для непосредственного обновления значения или мне нужно вызвать operator[]
и выполнить поиск другого поиска?
// typedef std::map<Foo, Foo, Compare> Dictionary;
// Dictionary this_dictionary, other_dictionary;
for (Dictionary::const_iterator i = other_dictionary.begin();
i != other_dictionary.end();
++i) {
std::pair<Dictionary::iterator,bool> ret = this_dictionary.insert(*i);
if (!ret.second && confirmer.confirm()) {
// ???
}
}