So che l'allocazione dinamica della memoria manuale è una cattiva idea in generale, ma a volte è una soluzione migliore rispetto all'uso, ad esempio, std::vector
?Overhead to using std :: vector?
Per dare un esempio grezzo, se dovessi memorizzare un array di numeri interi n
, dove n
< = 16, ad esempio. Ho potuto renderlo operativo
int* data = new int[n]; //assuming n is set beforehand
oppure utilizzando un vettore:
std::vector<int> data;
È assolutamente sempre una migliore idea di utilizzare un std::vector
o potrebbe esserci situazioni pratiche dove ripartizione manualmente la memoria dinamica sarebbe un migliore idea, per aumentare l'efficienza?
Non è necessario 'push_back' . 'std :: vector (n)' è * quasi * equivalente alla tua versione di array dinamico, tranne per il fatto che gli interi 'n' sono valore, quindi zero, inizializzati nel vettore. –
juanchopanza
@juanchopanza: punto giusto. Ho rimosso la parte 'push_back'. Non doveva essere parte del confronto. –