Sto creando un programma che risolve questo problema qui: http://opc.iarcs.org.in/index.php/problems/BOOKLISTI vettori in C++ sono così lenti?
e gli unici posti che sto usando vettori sono:
for(int i =0;i < total_books; i++){
int temp;
cin >> temp;
books_order.push_back(temp);
}
e
for(int i = 0;i < total_entries; i++){
int index;
cin >> index;
index--;
cout << books_order[index] << endl;
books_order.erase(books_order.begin()+index);
}
(qui è il mio codice completo: http://cpaste.org/1377/)
Le uniche funzioni che utilizzo dai vettori sono vector :: erase, vector :: push_ba ck e vector :: begin. Per i grandi input il mio codice impiega più tempo di 3 secondi (che è il limite di tempo per quel problema), ma quando rimuovo la funzione vettoriale, viene eseguito molto più velocemente (ma dà una risposta errata)
Ho capito che è sbagliato usare i vettori in questo problema e il mio algoritmo è molto lento, ma non ho capito perché è lento.
Se sai perché le funzioni che sto usando sono lente, spiegamele. Grazie.
Qualsiasi linguaggio di programmazione può essere abusato ... Non è colpa del vettore. –
std :: vector è in realtà una matrice e passa al nuovo array quando richiede più spazio. Se il tuo vettore deve espandersi ad altissima velocità, prova ad usare invece il linklist. – liuyanghejerry
Qual è il vero problema che stai cercando di risolvere? Sono riluttante a incoraggiare altro codice, ma forse saresti interessato a una soluzione diversa. –