我正在开发一个大型的复杂模型(大多数是简单的数学,主要是代数,但有很多计算)。假设我必须做一次所有事情,我做了我的初始竞标,但现在范围已扩大,我需要多次运行整个模型(在相同的基础假设集上,但使用不同的数据集)。 / p>
根据我的初始需求,我创建了一堆类,然后在main函数中创建了这些类的动态实例,并在我去的时候通过引用传递给每个函数。这样,在主函数结束时,我可以在所有函数运行后执行所有必要的报告/输出。我的问题是如何现在修改我的主函数以允许多次迭代。下面是一些代码示例,后面是我的问题:
// 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),然后在对象的新实例上再次运行所有实例。这是我应该使用的情况类型&#34; new&#34;和&#34;删除&#34;管理迭代?这会改变我上面概述的函数调用吗?如果我想避免使用new和delete(留在堆栈中),我的选择是什么?
答案 0 :(得分:4)
没有。如果没有高度特殊原因,请不要使用new
和delete
。
std::vector<T>
提供了您可以使用的clear()
成员。如果您需要,我建议您为自己的类实现类似的类。或者您可以简单地执行PLF = std::vector<T>();
,假设您根据最基本的C ++指南编写它们,这对您自己的UDT没有任何修改会更好一点。