ciao.
Ho una necessità di creare un meccanismo di serializzazione / deserializazione binaria in un progetto di grafica 3d a cui sto lavorando.
Ho pensato alla move semantics.
e all' esempio che mi ha scritto shodan:
codice:std::vector<std::string> get_big_vector() { std::vector<std::string> temp; temp.resize(4000 * 1024); // 4MB /* varie operazioni sul vector */ return std::move(temp); }
i modelli in formato raw(binario) possono tenere anche piu' di 150 mb anche se me li trovo molto spezzettati, non tutti in un vector come nel tuo esempio bensi in oggetti come texture o triangoli ma il procedimento è lo stesso.
Posso avere ad es una texture con un array di char(un uimmagine bitmap) da 30 MB in cui il procedimento sembra lo stesso dell' esempio o altri 50 MB in un array di vector(punti 3d).
Mi chiedevo se posso trarre un guadagno di memoria e tempo usando le move semantics?
quello che non riesco a capire è questo : non basta usare un riferimento per spostare i dati?
o le move semantics servono solo per le copie dei dati?Come per es fare un clone del modello 3d
graziecodice:std::vector<std::string>* get_big_vector() { std::vector<std::string>* pTemp = new std::vector<std::string>(); pTemp->resize(4000 * 1024); // 4MB /* varie operazioni sul vector */ return pTemp; }