Dato questo esempio:Riutilizza uno std :: string spostato?
std::vector<std::string> split(const std::string& str) {
std::vector<std::string> result;
std::string curr;
for (auto c : str) {
if (c == DELIMITER) {
result.push_back(std::move(curr)); // ATTENTION HERE!
} else {
curr.push_back(c);
}
}
result.push_back(std::move(curr));
return result;
}
Posso riutilizzare la curr
std: string? Questo frammento sembra funzionare: dopo curr
viene spostato all'interno del vettore result
, diventa vuoto. Voglio essere sicuro che questo non è un comportamento indefinito nello standard e non funziona solo a causa della fortuna.
è lasciato in uno stato valido, ma non specificato. Non è garantito che sia vuoto. –
Penso che la differenza qui sia sottile, ad esempio: ottimizzazione delle stringhe piccole –