c++ - Convert malloc to new -


how write following code using new operator? please explain in detail. in advance.

#include<alloc> #define maxrow 3 #define maxcol 5 using namespace std;  int main() {     int (*p)[maxcol];     p = (int(*)[maxcol])malloc(maxrow*sizeof(*p)); }  

quite simply, answer question literally:

p = new int[maxrow][maxcol]; 

this allocates 2d array (maxrow maxcol) on free store and, usual new, returns int(*)[maxcol] - same type decaying 2d array. don't forget delete[] p;.

the last part brings importance of std::vector. presumably, know size of second dimension @ compile-time. therefore, std::vector<std::array<int, maxcol>> work added bonus of not requiring delete[] statement, plus knows size (maxrow). please use if @ possible.

in fact, in example, both dimensions known @ compile-time, meaning std::array<std::array<int, maxcol>, maxrow> work here. that's typically preferable dynamic allocation.

if neither dimension known @ compile-time, best bet vector of vectors or dedicated matrix class increase performance when know every inner vector same size.


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -