ho un std::vector<std::vector<double>>
e vorrei aggiungere alcuni elementi al fine di esso e questo è stato il mio processo:Piazzola di un vettore con lista di inizializzazione
std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});
ma questo non viene compilato, mentre il seguente farà:
std::vector<double> vector({0,0});
Perché non è possibile emplace_back costruire l'elemento in questa posizione? O cosa sto sbagliando?
Grazie per il vostro aiuto.
grazie, ma ho un'altra domanda a questo: Perché funziona per il secondo esempio? Poiché il compilatore ha informazioni simili sul tipo (emplace_back si aspetta di ottenere argomenti per un costruttore di std :: vector e così è il secondo esempio) – m47h
Perché nel secondo esempio si chiama il costruttore del vettore, che può gestire l'elenco di inizializzazione direttamente. – marli
Così efficacemente non stai emplacing, ma semplicemente spingi un elemento già costruito, piuttosto che costruire il vettore sul posto. –