我的應用程序合併了兩個std::map
實例。如果沒有重複項,則合併將在沒有干預的情況下完成。但是,如果檢測到重複項,則該方法將詢問是否忽略或覆蓋新值。 (該查詢可以通過規則表,用戶的消息框或其他邏輯來回答......它僅僅是從具有bool confirm() const
方法的純虛擬類派生的類的實例。)從迭代器更改std :: map中的值
如果插入失敗,他們決定覆蓋現有的條目,我已經有一個迭代器指向正確的項目進行更新。我可以使用此迭代器直接更新值,還是必須致電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()) {
// ???
}
}
當然!出於某種原因,我認爲'pair :: second'會返回一個不可修改的值。謝謝! –