本文讨论了vector高维数组与一维数组的处理速度。
//
//
// File: vector_text.cpp
// Author: Onlyone
// Date: 2017.10.5
//
// Description:
// runing time of vector.
//
/
#include
#include
#include
using namespace std;
void main()
{
time_t start = 0, end1 = 0, end2=0;
long m = 1e5, n = 4e1, p = 2, q = 5, sum = 1;
time(&start);
// 将四维数组用一维数组处理
vector
a(m*n*p*q, 0);
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < p; k++)
{
for (int l = 0; l < q; l++)
{
int xh = ((i*n + j)*p + k)*q + l;
a[xh] = sum;
sum++;
}
}
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
for (int k = 0; k < p; k++)
{
for (int l = 0; l < q; l++)
{
int xh = ((i*n + j)*p + k)*q + l;
a[xh] = a[xh];
//std::cout << a[xh] << std::endl;
}
}
}
}
time(&end1);
// 用vector建立四维数组。
vector < vector< vector< vector
> > > grid( m, ( vector< vector< vector
> > (n, vector< vector
>(p, vector
(q, 0) ) ) ) ); sum = 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < p; k++) { for (int l = 0; l < q; l++) { grid[i][j][k][l] = sum; sum++; } } } } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < p; k++) { for (int l = 0; l < q; l++) { grid[i][j][k][l] = grid[i][j][k][l]; //std::cout << grid[i][j][k][l] << std::endl; } } } } time(&end2); std::cout << "Time of 1 is : " << (end1 - start) << endl; std::cout << "Time of 2 is : " << (end2 - end1) << endl; getchar(); }
运行结果为:
可见, 使用vector时,将高维数组用一维数组处理可以极大地提高运行速率。