2014-03-24 36 views
0

在我開始使用這種數據類型之前,因爲我是Qt的初學者,是否可以使用QGraphicsItem作爲QHash的密鑰?這似乎是合法的宣佈像這樣的:使用QGraphicsItem作爲QHash的密鑰

QHash<QGraphicsItem*, someType> hashName; 

所以我想這是允許的東西。

謝謝。

+0

是的,它非常好。請注意,當你刪除一個圖形項目時,你應該從哈希中手動刪除指向它的指針。 –

+0

謝謝。這樣做是有道理的,因爲我猜測這個關鍵字只是一個數字,而不是區域指針。 – Francesco

回答

0

是的。但我會用QMap<QGraphicsItem*, someType>,但這並沒有太大的區別。此外,您可以繼承QGraphicsItem以將數據附加到項目。

+0

在這裏使用'QMap'沒有意義:在'QMap'中按鍵查找速度較慢,而按指針排序沒有任何意義。還可以通過'QGraphicsItem :: setData'將數據附加到項目,而不需要創建'QGraphicsItem'子類。 –

+0

我認爲使用散列需要在訪問,迭代和插入值時計算密鑰的散列值(在'QHash'實現中,在幕後)。或哈希int /指針優化莫名其妙? – mugiseyebrows

+0

散列指針是微不足道的,並在Qt中執行爲'reinterpret_cast (key)^ seed'。 –