valarray
classe di stesso per array
classe sguardo, si può spiegare a me dove io preferirei valarray
oltre array
o viceversa?Qual è la differenza tra std :: valarray e std :: array di
risposta
valarray
era già in C++ 03,array
è nuovo in C++ 11valarray
è di lunghezza variabile,array
non è.valarray
è stato progettato per i calcoli numerici e fornisce un sacco di operazioni tra cui+
,-
,*
,cos
,sin
, ecc ...array
non lo fa.valarray
ha un'interfaccia per recuperare le sezioni dell'array (sotto array),array
no.
mentre tutte le risposte sono buone e ognuna ha qualcosa in più non sapevo quale accettare. quindi grazie a tutti voi !. – codekiddy
Consentitemi di aggiungere un paio di collegamenti su 'array' e' array' contro 'vector' http://en.cppreference.com/w/cpp/container/array e http://stackoverflow.com/questions/15079057/array-vs-vettori-introduttivo-somiglianze-e-differenze –
valarray
è una struttura dati dinamica, le cui dimensioni possono cambiare in fase di esecuzione e che esegue l'allocazione dinamica. array
è una struttura di dati statici la cui dimensione è determinata al momento della compilazione (ed è anche un aggregato).
Non utilizzare valarray
, tuttavia; basta usare invece vector
.
perché è preferibile il vettore? – DilithiumMatrix
@zhermes: hm, forse [controllare questa domanda] (http://stackoverflow.com/questions/1602451/c-valarray-vs-vector) per alcune informazioni di base. Essenzialmente, gli algoritmi standard e 'vector' ti danno tutto ciò di cui hai bisogno. –
I modelli di classe relativi a std::valarray<T>
sono destinati a supportare le tecniche di ottimizzazione note come modelli di espressione . Non ho provato a farlo, ma la mia comprensione è che le specifiche non richiedono questo e inoltre non supportano questo a sufficienza. In generale, std::valarray<T>
è una classe abbastanza specializzata e non è molto utilizzata. Inoltre, ritengo che gli argomenti del modello supportati per std::valarray<T>
siano un set limitato (ad esempio i tipi numerici incorporati).
Sull'altro std::array<T, n>
è una matrice di dimensioni fisse che supporta, per quanto possibile pur rimanendo di dimensioni fisse, la normale interfaccia contenitore. In sostanza, std::array<T>
è un più comodo da usare versione di T[n]
.
Vedi http://stackoverflow.com/questions/1602451/c-valarray-vs-vector – Johnsyweb
Si tratta di 'valarray', non' vallaray'. Non sono affatto la stessa cosa, probabilmente non dovresti usare 'valarray' dato che è così mal concepito da renderlo inutile. La differenza tra 'array' e' vector' dovrebbe essere sufficiente. –