Ändern Sie den Wert in std::map von iterator

Meine Anwendung führt zwei std::map Instanzen. Wenn keine Duplikate vorhanden sind, wird der merge abgeschlossen, ohne intervention. Allerdings, wenn ein Duplikat gefunden wird, dann ist die Methode, die fragt, ob der neue Wert ignoriert werden sollen oder überschrieben werden. (Diese Abfrage kann beantwortet werden, indem eine Regel, Tabelle, Feld Nachricht an den Benutzer, oder eine andere Logik ... es ist nur eine Instanz von einer Klasse abgeleitet von einer rein virtuellen Klasse mit einem bool confirm() const Methode.)

Wenn das einfügen schlägt fehl, und Sie entscheiden sich, überschreiben Sie den vorhandenen Eintrag, ich habe bereits ein iterator zeigt auf das richtige Element zu aktualisieren. Kann ich mit diesem iterator aktualisieren Sie den Wert direkt ein, oder muss ich anrufen operator[] und nehmen den Treffer von einem anderen lookup?

//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()) {
    //???
  }
}

InformationsquelleAutor Dave Mateer | 2011-08-24

Schreibe einen Kommentar