Ho eseguito 3 diversi esperimenti che coinvolgono elenchi e vettori C ++.
Quelli con vettori si sono dimostrati più efficienti, anche quando sono stati coinvolti molti inserimenti nel mezzo.
Da qui la domanda: in quale caso le liste hanno più senso dei vettori?
Se i vettori sembrano più efficienti nella maggior parte dei casi, e considerando quanto sono simili i loro membri, quali vantaggi rimangono per le liste?
Genera N numeri interi e inseriscili in un contenitore in modo che il contenitore rimanga ordinato. L'inserimento è stato eseguito in modo ingenuo, leggendo gli elementi uno a uno e inserendo quello nuovo prima del primo più grande.
Con un elenco, il tempo passa attraverso il tetto quando la dimensione aumenta, rispetto ai vettori.Inserisci N numeri interi alla fine del contenitore.
Per elenchi e vettori, il tempo è aumentato dello stesso ordine di grandezza, sebbene con i vettori fosse 3 volte più veloce.Inserisci N numeri interi in un contenitore.
Avvia il timer.
Ordinare il contenitore utilizzando list.sort per gli elenchi e std :: sort per i vettori. Stop timer.
Ancora una volta, il tempo aumenta dello stesso ordine di grandezza, ma è in media 5 volte più veloce con i vettori.
Potrei continuare a eseguire test e capire un paio di esempi in cui gli elenchi si sarebbero dimostrati migliori.
Ma l'esperienza comune di voi ragazzi che leggete questo messaggio potrebbe fornire risposte più produttive.
Potresti esserti imbattuto in situazioni in cui gli elenchi erano più convenienti da usare o si sono comportati meglio?
list
probabilmente fa meglio se stai rimuovendo molti elementi. Non credo che un vector
mai restituirà memoria al sistema fino a quando l'intero vettore non viene eliminato. Inoltre, tieni presente che il test n. 1 non sta testando il tempo di inserimento da solo. È un test che combina ricerca e inserimento. È trovare il posto dove inserire dove list
è lento. L'inserto effettivo sarà più veloce del vettore.