我试图弄清楚以下问题的最优实现:什么数据结构用于对象的评估顺序?
比方说,我们有一个类A
代表一个复杂的数学对象,并在建设初期持有所有需要的内在状态。对于A
的每个对象a_i
,可以计算最终数值,该数值取决于其他a_j
与j < i
的非平凡方式,并且a_0
是已知的。此外,导致最终答案的公式需要特殊的评估顺序,并且可以定义a_i
的比较运算符。
我想要做的是首先创建所有需要的a_i
,将它们推入一些有序数据结构,最后以正确的顺序遍历结构以获得最终结果。
现在到了真正的问题:我使用哪种数据结构来以一般方式实现评估顺序结构?二进制堆?或者我只是简单地使用std :: vector并在之后进行排序?
谢谢!
这个问题太抽象了,我不能提供具体的答案。但是,std :: set或std :: multiset可能是您的问题的良好数据结构。 – 2011-03-21 16:42:05