Allgemein, was ist der richtige Weg, um Qt-Container tief zu kopieren? Ich mache mir keine Sorgen darüber, dass die Container rekursiv tief kopiert werden, obwohl das Adressieren einer solchen Datei hilfreich wäre.Wie man QMap und andere Qt-Container tief kopiert
Antwort
Trotz allem, was jeder Ihnen sagen wird - dass Sie Qt-Container nicht tief kopieren - gibt es Situationen, in denen Sie einfach eine tatsächliche tiefe Kopie statt nur einer flachen durchführen müssen. Um dies zu tun, verwenden Sie detach()
:
container1 = container2;
container1.detach();
Ehrfürchtig. Dies ist die Antwort –
Können Sie ein Beispiel geben, wann Sie dies tun müssten? In dem Moment, in dem Sie "container1" ändern, wird eine tiefe Kopie ausgeführt, wenn Sie sie nicht ändern - warum sollten Sie sie kopieren? – cmannett85
@ cmannett85 Gerade gestern musste ich genau das tun. Ich habe zwei Threads, man empfängt Daten über einen Kanal (ähnlich wie Socket), verarbeitet die Daten und speichert sie in ein paar Containern. Der andere Thread rendert die Daten, indem er regelmäßig nach neuen Daten sucht. Wenn neue Daten vorhanden sind, sperrt es einen Mutex und kopiert Daten aus einigen Containern - hier muss ich einen tiefen Kopiervorgang durchführen. Wenn ich keine Tiefenkopie durchführen würde, würde das Sperren für jeden der Container getrennt erfolgen, wenn der Datenverarbeitungs-Thread sie modifiziert, was die Leistung beeinträchtigen würde. – kralyk
- 1. Perl: Wie man ein gesegnetes Objekt tief kopiert?
- 2. C Programmierung. Wie man eine Struktur tief kopiert?
- 3. Wie tief sollten Konstruktoren kopiert werden?
- 4. Wie kopiert man Zeilen von einer Tabelle in eine andere?
- 5. Wie kopiert man Bits von einer Variablen in eine andere?
- 6. Wie kopiert man Gdk.image?
- 7. Wie man ein beobachtbares Array tief in ein normales jquery-Array kopiert
- 8. Wie kopiert man SKSpriteNode mit SKPhysicsBody?
- 9. verstehen, wie man Daten kopiert
- 10. Wie kopiert man java.util.list Collection
- 11. Kopiert Go (tief) Schlüssel beim Einfügen in eine Karte?
- 12. QMap von QMimeData senden
- 13. Unterstützt QMap benutzerdefinierte Komparatorfunktionen?
- 14. Wie kopiert man beides - HTML und Text in die Zwischenablage?
- 15. Gegenwert von Nested QMap
- 16. Wie kopiert man einen Build zum Testserver?
- 17. QMap :: insertMulti oder QMultiMap?
- 18. QMap iterate foreach
- 19. Wie entferne ich Werte aus einer QMap?
- 20. wie man zwischen Ordnern und Elternordner ohne vollständigen Pfad kopiert
- 21. Wie kopiert und erstellt man einen Testfall von JIRA?
- 22. Wie kopiert man ref-Typen (decopy)?
- 23. Wie kopiert man ein dynamisches Eclipse-Webprojekt?
- 24. Wie kopiert man ein AcroForm mit iText?
- 25. Wie kopiert man mein Mvc asp.net Projekt?
- 26. Wie man einige Attribute nicht kopiert?
- 27. wie man alle Quellgläser mit Gradle kopiert
- 28. Wie kopiert man einen Python-Bytearray-Puffer?
- 29. Wie kopiert man Teile eines 2D-Arrays?
- 30. Wie kopiert man Dateien mit Apache Kamel
Der obige Code funktioniert gut für mich - warum denkst du, wird es nicht? – cmannett85
@ cmannett85 Ich habe es durch GDB ausgeführt und gesehen, dass beide Karten "value2" enthalten –
Ja, ich habe den Code zuerst falsch gelesen, sollte dieses Snippet gut funktionieren. Löschen meiner Antwort –