è l'assenza diPerché std :: array non ha un costruttore che accetta un valore per l'array da riempire?
std::array<T,size>::array(const T& value);
una svista? Mi sembra molto utile e i contenitori dinamici (come std::vector
) hanno un costruttore simile.
Sono pienamente consapevole di
std::array<T,size>::fill(const T& value);
ma che non è un costruttore, e la memoria viene azzerato per primo. Cosa succede se voglio tutti i -1
come this guy?
"e la memoria verrà azzerata prima" sei sicuro che sia vero? – tohava
Prima non verrà azzerato, a meno che non lo chieda. –
Oltre all'argomento * aggregato * di tutte le risposte, potrebbe esserci anche un ragionamento più concettuale. Un costruttore di riempimento probabilmente nasconderebbe il fatto che non sta realmente costruendo i singoli elementi. In primo luogo invocherà l'inizializzazione dell'aggregato e * quindi * copierà il valore negli elementi, non può copiare-costruire subito gli elementi (al contrario di, ad esempio, 'std :: vector'). Quindi dato che sarebbe sempre equivalente a 'array(); array.fill(); ', omettendo il costruttore in primo luogo non nasconde questo fatto. –