二维数组和vector性能差别怎么这么大?
int tmp[256][256];
int a[256][256];
std::vector<std::vector<int> >vtmp;
//设置vtmp元素个数为[256][256],对tmp,vtmp中的元素进行赋值,使tmp[i][j] == vtmp[i][j]。
//...
time_t now;
now = time(NULL);
cout << ctime(&now) << endl;
for(int n = 0; n < 4096; n++)
for(int i = 0; i < 256; i++)
for(int j = 0; j < 256; j++)
{
a[i][j] = tmp[i][j];
a[i][j] += tmp[i][j];
a[i][j] /= tmp[i][j];
}
now = time(NULL);
cout << ctime(&now) << endl;
这段程序大约2次cout之间的时间差为10秒左右,但是把其中的tmp[i][j]改成vtmp[i][j]之后,程序运行了几分钟还没有结束。
不是说vector的性能基本相当于数组吗?怎么差别这么大?