选择满足条件的特定对象

时间:2011-07-12 19:13:12

标签: c++ algorithm stl-algorithm

假设我的对象看起来非常像这样:

class object
{
  public:
    // ctors etc.

    bool has_property_X() const { ... }
    std::size_t size() const { ... }

  private:
    // a little something here, but not really much
};

我将这些对象存储在矢量中,并且矢量相当小(例如,最多约1000个元素)。然后,在性能关键算法中,我想选择具有属性X 具有最小大小的对象(如果有多个这样的对象,则选择其中任何一个)。我需要多次“选择”,并且属性X和大小的保持可能在选项之间变化,因此对象在这里是动态的。两个查询(属性,大小)都可以在恒定时间内完成。

我最好如何做到这一点?在这里,性能被描述为重要的。我现在的想法是:

1)将std :: min_element与合适的谓词一起使用。这可能还需要boost :: filter_iterator或类似的东西来迭代满足属性X的对象?

2)使用一些数据结构,例如优先级队列。我会将指针或reference_wrappers存储到对象等等。至少对我来说,感觉很慢,而且由于物体的动态特性,它甚至可能都不可行。

对这些想法有任何其他建议或意见吗?我应该继续尝试这些方案和简介中的任何一个或两个吗?

1 个答案:

答案 0 :(得分:1)

你最后的选择总是很好。我们对代码如何运行的直觉常常是错误的。因此,在可能的情况下,分析对关键代码始终有用。