目前,我使用矢量容器作为算法。 算法结果非常好,但运行时间是个大问题。所以我尝试在一些测试程序中使用new和delete等其他数据结构。运行时间比使用矢量少200倍。
最后,我的问题是:有没有办法通过使用new更改代码,这样我就不必更改超过10,000行的整个代码,因为我经常使用vector-methods。
但是,访问测试程序中的元素所需的时间可能是最大的问题。
struct SOME_ELEMENTS
{
int a;
float b;
vector<int> c;
};
void function_1(vector<SOME_ELEMENTS> &elements, int number)
{
vector<SOME_ELEMENTS> temp_elements;
vector<SOME_ELEMENTS> best_elements = elements;
while (true)
{
temp_elements = elements
for (int i = 0; i < number; i++)
{
temp_elements[i].c.push_back(i);
//change temp_elements in many other way
//calculate a value depending on temp_elements
if (true)
{
best_elements = temp_elements;
}
}
if(true)
{
elements = best_elements;
}
//termination_criterium
}
}
void main()
{
int no;
vector<SOME_ELEMENTS> a;
//set values for a and no
function_1(a, no);
_getch();
}
这里使用矢量慢200倍的例子:
void main()
{
int no = 100000;
int runnings = 10000000;
//int *big_vect = new int[no];
vector<int> big_vect(no);
int a = 1;
big_vect[no - 1] = 1;
clock_t start_time, end_time, computing_time;
start_time = clock();
for (int i = 0; i < runnings; i++)
{
big_vect[no - 1] = big_vect[no - 1] + 1;
}
end_time = clock();
computing_time = end_time - start_time;
_getch();
}
提前,谢谢你的帮助!