Salve a tutti, il titolo non è molto esplicativo del problema in questione, ma non mi veniva in mente niente di meglio per esprimere il concetto.
Sto programmando in C++, in particolare (ma non è importante ai fini della soluzione) utilizzando le librerie Qt.
Il mio programma esegue delle simulazioni di corse di auto, vengono creati n oggetti "Car", viene spezzettato il circuito in vari "tratti" elementari (curva, o rettilineo) e viene calcolato in un for il tempo di percorrenza di ogni tratto, per ogni oggetto Car, per n giri. Alla fine della simulazione devo inserire tutti i dati creati in una tabella di sqlite.
Inserisco per maggiore comprensione il pezzo in cui si esegue il loop.
(macchine è un vettore di oggetti car. Pensate ad un oggetto Car come un qualcosa che riceve in input delle informazioni sulla strada e da in output il tempo di percorrenza minimo imposto dai propri limiti fisici/costruttivi)
codice:
for(int lap=0;lap<=ngiri;lap++){
for(int plt=0;plt<macchine.size();plt++){
tmpGiro=QTime(0,0,0,0);
for(int tr=0;tr<nTratti;tr++){
if(tr==(nTratti-1))
tmpTratto= macchine[plt].getTempo(autodromo.mappaCircuito.at(tr), autodromo.mappaCircuito.at(0),lap,m);
else
tmpTratto= macchine[plt].getTempo(autodromo.mappaCircuito.at(tr), autodromo.mappaCircuito.at(tr+1),lap,m); 
tmpGiro=tmpGiro.addMSecs(qAbs(tmpTratto.msecsTo(QTime(0,0,0,0)))); }
if(lap==0)
mappatempi[macchine[plt].get_nomePilota()]=tmpGiro;
if(lap>=1)
mappatempi[macchine[plt].get_nomePilota()] =mappatempi[macchine[plt].get_nomePilota()].addMSecs(qAbs(tmpGiro.msecsTo(QTime(0,0,0,0)))); 

s.append("SELECT " ""+QString::number(lap)+", " ""+QString::number(posizione)+", " "'"+macchine[(plt)].get_nomePilota()+"', "
 "'"+tmpGiro.toString("hh:mm:ss.zzz")+"', " "'"+mappatempi[macchine[plt].get_nomePilota()].toString("hh:mm:ss.zzz")+"', " ""+QString::number(deltat)+", " ""+QString::number(pit)+", " ""+QString::number(macchine[plt].getIncidente())+" " );
 if(plt!=(macchine.size()-1))
s.append(" UNION ALL /"); 
}
if(lap!=(ngiri))
s.append(" UNION ALL /");
 }
query.exec(s)
(scusate ma non capisco come formattare il codice)
in questa tabella sostanzialmente devo scrivere:
giro|posizione|pilota|tempo giro|tempo_totale|delta tempo rispetto a chi sta davanti| ->altri parametri.

Calcolo il tempo di giro, sommando semplicemente tutti i tempi di ogni tratto che compone l'intera pista, poi per tener conto del tempo totale invece, avevo pensato di salvare tutto in una mappa, che è quella che vedete: mappatempi<QString, QTime>, che contiene come chiavi i nomi dei piloti (nomi unici, creati con un algoritmo), ed il loro tempo di percorrenza, al quale ogni fine giro aggiungo il tempo di giro.

Veniamo finalmente al problema che non riesco a risolvere:
non riesco a figurarmi un modo per trovare la posizione del pilota, intesa in modo che il pilota con il minor tempo totale è il 1°, e quello con il tempo totale più lungo è l'ultimo.
Per il momento l'unica cosa che mi viene in mente è mettere a tutti quanti una posizione non valida (per esempio 0), e poi a fine simulazione fare una query di update, lo stesso dicasi per quanto riguarda la differenza di tempo con la macchina antecedente.
Ma d'altro canto mi sento sicuro di avere a disposizione tutti i dati sufficienti per fare questi calcoli.
Qualcuno ha qualche suggerimento in merito?