In generale, qual è il modo corretto di copiare in profondità i contenitori Qt? Non sono preoccupato per la copia profonda dei contenitori in modo ricorsivo, sebbene l'indirizzamento sarebbe utile.Come copiare in profondità QMap e altri contenitori Qt
risposta
Nonostante quello che tutti ti diranno - che non copi in profondità i contenitori Qt - ci sono situazioni in cui devi semplicemente eseguire una copia profonda effettiva invece di una poco profonda. Per fare questo, utilizzare detach()
:
container1 = container2;
container1.detach();
Fantastico. Questa è la risposta –
Puoi dare un esempio di quando avresti bisogno di fare questo? Nel momento in cui modifichi 'container1' si esegue una copia profonda, se non la si modifica - perché dovresti copiarla? – cmannett85
@ cmannett85 Proprio ieri ho dovuto fare esattamente questo. Ho due thread, uno riceve i dati su un canale (simile al socket), elabora i dati e li memorizza in un paio di contenitori. L'altro thread esegue il rendering dei dati verificando periodicamente nuovi dati. Se ci sono nuovi dati, blocca un mutex e copia i dati da alcuni dei contenitori - questo è il posto dove ho bisogno di eseguire una copia profonda. Se non eseguissi la copia profonda, il blocco sarebbe eseguito separatamente per ciascuno dei contenitori quando il thread di elaborazione dati li modifica, il che ridurrebbe le prestazioni. – kralyk
- 1. Programmazione C. Come copiare in profondità una struttura?
- 2. Come posso copiare in profondità un vettore in J2ME/BlackBerry?
- 3. Come posso copiare in profondità un oggetto DateTime?
- 4. Come forzare JavaScript per copiare in profondità una stringa?
- 5. Complessità di std :: list :: splice e altri contenitori di elenchi
- 6. Come copiare un PNG da altri PNG?
- 7. Come si popolano i valori di una QMap statica in C++ Qt?
- 8. Qt Main-Gui e altri thread + loop di eventi
- 9. contenitori CIO e IDisposable
- 10. Come rimuovere i valori da un QMap?
- 11. Come eseguire applicazioni Qt 5 su altri computer (Windows 7)
- 12. Contenitori privilegiati e capacità
- 13. Bash: trovare e copiare
- 14. Come copiare i jar delle dipendenze (senza contenitori di test) in una directory usando maven?
- 15. const e STL contenitori
- 16. Qual è il modo migliore per copiare in profondità un hash di hash in Perl?
- 17. come selezionare tutto e copiare in vim?
- 18. Come copiare in profondità un set di dati e modificare i riferimenti FK al punto su tutte le copie?
- 19. È corretto percorrere QMap con iteratori e cancellare/aggiungere elementi?
- 20. Come appiattire gli iteratori dei contenitori nidificati?
- 21. e profondità di lexsort MultiIndex
- 22. Costruire istanze monade efficienti su `Set` (e altri contenitori con vincoli) usando il monad di continuazione
- 23. Contenitori OpenCV, Matlab e STL
- 24. Qualche idea per cui QHash e QMap restituiscono const T invece di const T &?
- 25. contenitori senza serratura e visibilità
- 26. Variabile globale in Qt, come?
- 27. Come copiare e rinominare un contenitore di Docker?
- 28. Profondità di ricorsione in C# - Quanto in profondità puoi andare
- 29. Contenitori Bootstrap multipli e/o nidificati?
- 30. Qual è il modo più semplice per clonare in profondità (copiare) un oggetto Scala mutabile?
Il codice sopra funziona bene per me - Perché pensi che non lo farà? – cmannett85
@ cmannett85 L'ho eseguito tramite GDB e ho visto che entrambe le mappe contengono "value2" –
Sì, ho interpretato male il codice in un primo momento, questo frammento dovrebbe funzionare correttamente. Cancellando la mia risposta. –