2

我正在开发一个大型、复杂的模型(主要是简单的数学,主要是代数,但有很多计算)。我最初的出价是假设我必须做所有事情一次,但现在范围已经扩大,以至于我需要多次运行整个模型(在同一组基础假设上,但使用不同的数据集)。

根据我最初的需求,我创建了一堆类,然后在我的主函数中创建了这些类的动态实例,并在执行过程中通过引用将它们传递给每个函数。这样,在主函数结束时,我可以在所有函数运行后进行所有必要的报告/输出。我的问题是关于现在如何修改我的主要功能以允许多次迭代。下面是一些示例代码,然后是我的问题:

 // Sample class declaration (in main)
 vector<PropLevelFinancials> PLF;

// Sample function call (functions in other header files)
ProcessPropFinancials(vector<PropLevelFinancials>& PLF);

// Reporting at the end of main (functions in other header files)
OutputSummaryReport(vector<PropLevelFinancials>& PLF, other objects);

// What I need to do next
// Clear/Delete PLF and other objects, iterate through model again

我对当前程序的速度和结果感到非常满意,因此不需要在这方面进行大量输入(尽管总是欢迎提出建议)。

我应该如何实现循环遍历多个数据集的能力(我显然知道如何循环,我的问题是关于内存管理)?速度至关重要。我想基本上删除我创建的类对象的现有实例(PLF),然后在对象的新实例上再次运行所有内容。这是我应该使用“新”和“删除”来管理迭代的情况吗?如上所述,这会改变我的函数调用吗?如果我想避免使用 new 和 delete(留在堆栈上),我有什么选择?

4

1 回答 1

4

不,永远不要在没有new非常delete特殊的原因的情况下使用。

std::vector<T>提供clear()您可以使用的会员。如果您需要的话,我建议您为自己的课程实施类似的课程。或者您可以简单地执行PLF = std::vector<T>();,如果您根据最基本的 C++ 指南编写它们,那么无需修改就可以更好地为您自己的 UDT 工作。

于 2013-07-23T20:51:51.007 回答