1
選擇特定對象比方說,我有一個看起來非常大致是這樣的對象:滿足條件
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存儲到對象等等。這至少對我來說,感覺很慢,可能由於對象的動態特性而不可行。
對這些想法有任何其他建議或意見?我是否應該繼續嘗試這些方案和配置文件中的任何一個或兩個?
這裏的關鍵詞是分析。如果你期望矢量在將來增長,那麼使用優先隊列是一個安全的選擇。如果你不這樣做,那麼你必須測量不同的實現。 –