我正在开发游戏。我将我的游戏对象存储在这张地图中:
std::map<std::string, Object*> mObjects;
std::string
是在代码中进一步查找的对象的键/名称。指向一些对象非常容易,例如:mObjects["Player"] = ...
. 但我担心它会因为在该地图中的每次搜索中分配 std::string 而变慢。所以我决定int
在该地图中用作键。
第一个问题:真的会更快吗?
第二,我不想删除我当前访问的对象类型,所以我找到了方法:将crc
字符串计算存储为键。例如:
Object *getObject(std::string &key)
{
int checksum = GetCrc32(key);
return mObjects[checksum];
}
Object *temp = getOject("Player");
或者这是个坏主意?为了计算crc
我会使用boost::crc
. 或者这是个坏主意,并且校验和的计算比使用键类型在地图中搜索要慢得多std::string
?