二维数组和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的性能基本相当于数组吗?怎么差别这么大?
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的性能基本相当于数组吗?怎么差别这么大?
...全文
相关推荐
PCB不同颜色会影响性能吗?PCB镀金和镀银的差别
PCB不同颜色会影响性能吗?PCB镀金和镀银的差别 很多DIY玩家会发现,市场中各种各样的板卡产品所使用的PCB颜色五花八门,令人眼花缭乱。比较常见的PCB颜色有黑色、绿色、蓝色、黄色、紫色、红色和棕色。一些厂商还别出心裁地开发了白色、粉色等不同色彩的PCB......
基于差别矩阵和属性选择的属性约简算法
基于差别矩阵和属性选择的属性约简算法,采用c++实现,能够在VS编译环境下快速实现,占用较少的内存资源。
关于Js的二维数组定义和方法
关于JAVASCRIPT中的关于二维码的数组的定义与排序方法!!!名师讲解.
C语言二维数组的定义和引用
C语言二维数组的定义和引用,适合初学者学习c语言中二维数组的定义与引用。
js二维数组定义和初始化的三种方法总结
本篇文章主要是对js二维数组定义和初始化的三种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助


