Scusate mi spiegate l'inefficenza del primo programma rispetto al secondo?
codice:
# include <iostream>
# include <fstream>
using namespace std;
int main(int narg, char * * args, char * * env)
{int *unidim = new int[1000000], **bidim = new int * [1000], i;
for(i=0; i < 1000; i++) bidim[i] = new int[1000];
if(narg < 2) return 1;
ifstream uno(args[1]);
if(!uno) return 2;
uno . read((char *)unidim, 1000000 * sizeof(int)),
uno . seekg(0, ios :: beg);
for(i=0; i < 1000; i++)
uno . read((char *)bidim[i], 1000 * sizeof(int));
uno . close();
cout << bidim[2][200] << ' ' << unidim[2200] << endl;
// si osservi che 2200 = 2 * 1000 + 200
}
codice:
# include <iostream>
# include <fstream>
using namespace std;
int main(int narg, char * * args, char * * env)
{int *unidim = new int[1000000], **bidim = new int * [1000], i;
//for(i=0; i < 1000; i++) bidim[i] = new int[1000];
if(narg < 2) return 1;
ifstream uno(args[1]);
if(!uno) return 2;
uno . read((char *)unidim, 1000000 * sizeof(int));
//uno . seekg(0, ios :: beg);
for(i=0; i < 1000; i++)
//uno . read((char *)bidim[i], 1000 * sizeof(int));
bidim[i] = unidim + i*1000;
uno . close();
cout << bidim[2][200] << ' ' << unidim[2200] << endl;
// si osservi che 2200 = 2 * 1000 + 200
}