Heim > Backend-Entwicklung > C++ > Gibt es eine effizientere Möglichkeit, Elemente in einem std::set zu aktualisieren?

Gibt es eine effizientere Möglichkeit, Elemente in einem std::set zu aktualisieren?

Mary-Kate Olsen
Freigeben: 2024-12-18 15:49:10
Original
504 Leute haben es durchsucht

Is There a More Efficient Way to Update Elements in a std::set?

Aktualisierungsvorgänge in std::set: Behebung der Langeweile

Frage:

Der Aktualisierungsvorgang in std:: set erscheint aufgrund des Fehlens einer direkten Änderungs-API umständlich. Derzeit greifen Benutzer darauf zurück, das Element zu finden, es zu kopieren, seinen Wert zu aktualisieren, das Original zu löschen und die aktualisierte Kopie erneut einzufügen. Gibt es einen effizienteren Ansatz oder sollte std::set mit einer benutzerdefinierten Implementierung überschrieben werden?

Antwort:

std::set verwendet Const-Iteratoren, um es aufrechtzuerhalten geordnete Natur. Das Zulassen regulärer Iteratoren würde das Ändern von Elementwerten und möglicherweise eine Störung der Reihenfolge ermöglichen.

Daher ist die idiomatische Methode zum Aktualisieren von Elementen in einem Satz die von Ihnen beschriebene:

  1. Rufen Sie das Element mit ab ein konstanter Iterator
  2. Kopieren Sie das Element
  3. Aktualisieren Sie die kopierten Elemente value
  4. Löschen Sie das ursprüngliche Element mit dem const-Iterator
  5. Fügen Sie die aktualisierte Kopie erneut ein

Das Anpassen von std::set durch Erstellen einer eigenen Implementierung ist seit dem aktuellen Ansatz nicht erforderlich gilt als Standardmethode zum Durchführen von Aktualisierungen in diesem Container.

Das obige ist der detaillierte Inhalt vonGibt es eine effizientere Möglichkeit, Elemente in einem std::set zu aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage