本文讨论了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时,将高维数组用一维数组处理可以极大地提高运行速率。