Questa è una domanda specifica per C++ 11. Suppongo di avere già utilizzato un vettore std::vector<T> v
e di ridimensionarlo a n
elementi inizializzati con un valore esistente T val
. (Usecase tipico: il vettore è il membro di un'istanza che viene riciclata).È std :: vector <T> :: ridimensionamento (n, val) sufficiente per l'inizializzazione?
Quali sono i pro/contro dei seguenti modi e quali sono i più efficienti?
1) È std::vector<T>::resize(n, val)
sufficiente per l'inizializzazione?
v.clear();
v.resize(n, val);
2) In caso contrario, presumo che quanto segue sia corretto?
v.clear();
v.resize(n);
std::fill(v.begin(), v.end(), val);
3) Che ne dici di scambiare?
v.swap(std::vector<T>(n, val));
Se si tratta di un duplicato, si prega di collegamento alla soluzione, voterò per la chiusura. – Sheljohn
Perché vuoi ridimensionarlo? Per liberare la memoria? – edmz
@black Caso tipico: si tratta di un membro della classe e sto riciclando l'istanza. – Sheljohn