http://zhidao.baidu.com/link?url=laqSBrv-cGVs-nNwI4kjObGJ2UacUBf2gCBCbnwT-wC-UhpZ-UvKysB0DfzOWyan_srsTLYbJGEgaw1ET3uoTK
请赐教。
非常感谢 iamshuke 朋友。 我也试验过,只不过没想起用循环来扩大效果。 我只是增加纬度做实验,vector没问题,但是a[][]只要维度太大了,就无法分配空间了,所以我没试验出来。 主要是,现在我要尽可能提高时间效率(空间无所谓的)。
2011-03-15 18:18
提问者采纳
肯定是第二种效率高,毕竟vector寻址要多做些工作。不过这种差别应该会非常非常小,基本可以不考虑。 用下面的代码测试,在我的机器上,二维数耗时0.16s, vector耗时0.4s。 std::vector< std::vector<int> > a; int b[100][100]; std::vector<int> tmp; tmp.resize(100); a.resize(100, tmp); int i, nLoop; DWORD dwTickCount1 = GetTickCount(); for(nLoop = 0; nLoop < 10000; nLoop++) { for(i=0; i<100; i++) { for(int j=0; j<100; j++) { b[i][j] = i+j; } } } DWORD dwTickCount2 = GetTickCount(); for(nLoop = 0; nLoop < 10000; nLoop++) { for(i=0; i<100; i++) { for(int j=0; j<100; j++) { a[i][j] = i+j; } } } DWORD dwTickCount3 = GetTickCount(); CString sMsg; sMsg.Format(_T("%fs, %fs"), (dwTickCount2-dwTickCount1)/1000.0, (dwTickCount3-dwTickCount2)/1000.0); AfxMessageBox(sMsg);
-
提问者评价
-
谢谢,还是要考虑的,因为操作多了,会影响效率,快一秒也是快。