在我開始使用這種數據類型之前,因爲我是Qt的初學者,是否可以使用QGraphicsItem
作爲QHash
的密鑰?這似乎是合法的宣佈像這樣的:使用QGraphicsItem作爲QHash的密鑰
QHash<QGraphicsItem*, someType> hashName;
所以我想這是允許的東西。
謝謝。
在我開始使用這種數據類型之前,因爲我是Qt的初學者,是否可以使用QGraphicsItem
作爲QHash
的密鑰?這似乎是合法的宣佈像這樣的:使用QGraphicsItem作爲QHash的密鑰
QHash<QGraphicsItem*, someType> hashName;
所以我想這是允許的東西。
謝謝。
是的。但我會用QMap<QGraphicsItem*, someType>
,但這並沒有太大的區別。此外,您可以繼承QGraphicsItem
以將數據附加到項目。
在這裏使用'QMap'沒有意義:在'QMap'中按鍵查找速度較慢,而按指針排序沒有任何意義。還可以通過'QGraphicsItem :: setData'將數據附加到項目,而不需要創建'QGraphicsItem'子類。 –
我認爲使用散列需要在訪問,迭代和插入值時計算密鑰的散列值(在'QHash'實現中,在幕後)。或哈希int /指針優化莫名其妙? – mugiseyebrows
散列指針是微不足道的,並在Qt中執行爲'reinterpret_cast
是的,它非常好。請注意,當你刪除一個圖形項目時,你應該從哈希中手動刪除指向它的指針。 –
謝謝。這樣做是有道理的,因爲我猜測這個關鍵字只是一個數字,而不是區域指針。 – Francesco