Contesto:C'è un modo più naturale per rappresentare una matrice di T di un vettore < vector< T>>?
Sto cercando di imparare C++ (leggendo alcuni dei libri consigliati dalla comunità di stackoverflow) e ho deciso di provare e creare un programma di automi cellulare con funzionalità di base solo per motivi di apprendimento (e perché è interessante per me).
Domanda:
C'è un modo più naturale per rappresentare una matrice di elementi cellulari che usare un vettore < vettore < cellulare >>? Sto cercando potenziali alternative nelle librerie standard o in alcune altre librerie popolari. Il commento riguardante la performance sarebbe apprezzato.
Non ho avuto problemi a utilizzare il vettore di vettori, né problemi con la sintassi, vorrei solo sapere le alternative. E dato che sono inesperto, ogni volta che scrivo del codice immagino che probabilmente ci sono molti modi più semplici per farlo che non troverei da solo.
Questa è la mia prima domanda, quindi se ho fatto qualcosa contro le linee guida per le domande, apprezzerei molto il fatto che tu l'abbia indicato.
Utile domanda relativa per riferimento futuro: Is a vector<vector<double>> a good way to make a make a matrix class?
Se le prestazioni sono un problema reale, è probabile che si ottenga una persormanza leggermente migliore da un array multidimensionale grezzo: 'Cell (* cells) [100] = new Cell [100] [100];'.Il motivo è che il compilatore può accedere alle celle usando un semplice calcolo piuttosto che il doppio dereferenziamento. – Galik
Dato che hai chiesto: Non includere "grazie in anticipo" o qualsiasi forma di "grazie" nella tua domanda. Questo non è un forum. Per quanto riguarda la tua domanda: considera una classe Matrix che fornisce 'operator() (size_t, size_t)' - può gestire la sua memoria come preferisce, in particolare evitando la doppia-indiretta del 'vector' annidato. C'è anche ['std :: valarray'] (https://stackoverflow.com/questions/1602451/c-valarray-vs-vector), ma è specializzato. –
La "domanda correlata utile" sta confrontando un 'vettore di vettori' con una' matrice di matrici'. È probabile che entrambi questi approcci siano meno efficienti di un vero array multidimensionale per i motivi che ho già delineato. Un array multidimensionale richiede solo un dereferenziamento seguito da un semplice calcolo. Le matrici di array (o vettori) richiedono due dereferenze. – Galik