Sembra che l'allocatore faccia lo stesso lavoro di "posizionamento nuovo" e "operatore nuovo". e la sua interfaccia è più conveniente.Abbiamo ancora bisogno di "posizionamento nuovo" e "operatore nuovo"?
Ad esempio:
string *ps = static_cast<string *>(operator new(sizeof(string)));
new (ps) string("Hello");
cout<<*ps<<endl;
può essere riscritta per
allocator<string> as;
string *ps2 = as.allocate(1);
as.construct(ps2,"Hello");
cout<<*ps2<<endl;
Quindi questo significa che "nuova collocazione" e "operatore new" sono obsoleti?
Per retrocompatibilità. –
In particolare, 'allocator' richiede sia' placement new' che 'operator new' per fare ciò che fa. Direi che non sono "obsoleti", ma piuttosto non dovrebbero essere usati nel codice client. –
Il nuovo posizionamento è effettivamente utilizzabile, in particolare negli ambienti indipendenti, come i sistemi integrati e le sonde. – Skeen