Sto pianificando di scrivere un plug-in di elaborazione della geometria interattivo in C++ che ordinerà spesso grandi quantità di dati. Sebbene le indicazioni preliminari suggeriscano che l'ordinamento richiederà solo un secondo o due, preferirei mostrare i progressi in quel periodo, ad esempio vorrei aggiornare un indicatore di avanzamento alcune volte al secondo. Sarebbe preferibile attivare un cursore di attesa e lasciare all'utente un programma che si blocca per un periodo di tempo indeterminato (anche se sono solo pochi secondi).Come monitorare/mostrare lo stato di avanzamento durante un ordinamento C++
Se dovessi usare qualcosa come std :: sort, potrei usare la funzione di confronto per aggiornare l'indicatore di avanzamento di tanto in tanto, ma non avrei idea di 'percentuale completa'. Potrei anche suddividere l'ordinamento in sotto-ordinamenti, aggiornando l'avanzamento tra i sotto-ordinamenti e quindi l'unione. La mia migliore scommessa potrebbe essere quella di scrivere il proprio metodo di ordinamento, anche se non so quanto impegno richiederebbe per ottenere prestazioni pari a std :: sort (e garantire la correttezza). In ogni caso, quel metodo sort invierà occasionalmente una "percentuale completa" ad un metodo di callback.
Mi chiedevo se altre persone hanno incontrato e risolto questo problema - spero che forse ci sia un metodo di ordinamento in una libreria standard che fa quello che voglio, o qualche altra tecnica che non ho pensato.
Aggiornamento: Grazie per le grandi risposte finora. Ci sono stati alcuni suggerimenti molto validi, e ho intenzione di non scegliere la risposta accettata finché non avrò avuto la possibilità di testare le idee nel mio prossimo progetto.
Aggiornamento 2: Ho completato il mio progetto e questo è risultato essere un non-problema (almeno per il cliente. Poiché venderanno il software, potrebbero comunque ricevere feedback dai clienti che cambieranno le loro menti su questo). Scegliere una risposta accettata è stato difficile perché c'erano molte buone risposte, ma alla fine quella che ho scelto puntava a un articolo wiki su Merge Sort che aveva un'animazione molto evocativa. Quindi questa è la prima strategia che avrei perseguito se avessi avuto bisogno di andare avanti con questo).
Personalmente mi piacerebbe tenere a bada l'aggiunta di una caratteristica come questo fino a quando si osserva l'andamento reale di smistamento. Altrimenti, sta affrontando un problema che potrebbe non esistere. Si può anche percorrere il percorso semplice e visualizzare "Ordinamento ..." in una sorta di controllo del testo del registro o di una barra di stato. – Reinderien
@Reinderien: d'accordo, se non è rotto non aggiustarlo. Ma sto cercando di pensare al futuro. E la mia esperienza nella grafica 3D e nell'elaborazione della geometria è che gli utenti soffocheranno facilmente qualsiasi cosa con modelli e dati più grandi di quanto tu abbia mai immaginato. – brainjam