我想過存儲一些對象......現在我不知道該選什麼。什麼容器可供選擇
所以,現在我有這樣的代碼:
但是,正如我之前在這裏說,這是緩慢的,由於在每個搜索std::string
分配,所以關鍵應該是整數。
爲什麼我選擇std::string
作爲關鍵?因爲它很容易通過其名稱訪問對象,例如:
mObjects["SomeObj"];
所以我的第一個想法是:
std::map<int, Object*> mObjects;
,key是對象名稱的CRC:
mObjects[CRC32("SomeObject")];
但它有點不穩定。而且我知道這裏有特殊的哈希映射。 最後,我必須使用一些Compare
函數在地圖中對我的對象進行排序。
關於容器的任何想法我可以使用?
如此反覆,要點:
- Accesing通過字符串對象,但keyshould是整數,不串
- 一些功能
附註:排序在地圖對象提高使用率是允許的。
您是否在表示速度很慢之前先使用字符串鍵測量性能? – jfs 2011-04-08 17:52:26
由於運行時限制,字符串是必需的,或者是編譯時已知的所有值,並且可以用常量替換,例如:'const int SOME_OBJECT = 1; ...mObject [SOME_OBJECT] ...' – Thanatos 2011-04-08 17:55:48
@jfs是的,我測試過了。 – Ockonal 2011-04-08 17:56:15