gpt4 book ai didi

c++ - 选择满足条件的特定对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:15 26 4
gpt4 key购买 nike

假设我有一些看起来非常粗略的对象:

class object
{
public:
// ctors etc.

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

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

我将这些对象存储在一个 vector 中,并且该 vector 相当小(比如说,最多大约 1000 个元素)。然后,在性能关键算法中,我想选择同时具有属性 X 的对象具有最小的大小(如果有多个这样的对象,请选择其中任何一个)。我需要多次执行此“选择”,并且属性 X 的持有和大小在选择之间可能会有所不同,因此对象在某种程度上是动态的。两种查询(属性、大小)都可以在恒定时间内进行。

我怎样才能最好地实现这一点?性能在这里被认为很重要。我目前的想法:

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

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

对于这些想法还有其他建议或意见吗?我应该继续尝试这些方案和配置文件中的任何一个或两者吗?

最佳答案

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

关于c++ - 选择满足条件的特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com