在我的项目中,我使用哈希字符串,这些字符串在编译时会转换为唯一(希望!)数字。因此,当我需要资源(例如纹理)时,我只需调用
MngTexture->get(hash("my_texture"))
而且由于我正在创建一个简单的实体系统框架,并且需要从文件中加载组件数据,所以我创建了一种简单的语言(例如json)来存储数据,但是它是可编译的(将单词和字符从数字转换为数字,从字符串转换为哈希值) 。因此,例如,如果我想将ID哈希(“ my_texture”)的纹理链接到数据文件中的“ ball.PNG”,
|my_texture| = "ball.PNG"
哪里|| 是一个运算符,它告诉编译器对里面的单词进行散列。
因此,基本上我在实际代码和文件(用于加载组件的流)中都使用在编译时映射到int的字符串(因此它们没有任何开销)。为了计算哈希,只需在Google上搜索一下即可,它具有5-10行代码的简单功能。
当然,您可以从文件中加载字符串并在运行时对其进行哈希处理,在这种情况下,您不必自己编写字典,因为算法会帮您完成(从字符串中创建整数),而我认为hasing至少与在地图中搜索一样快,这是由于内存的局限性(您正在循环访问一个只有几个字节长的字符串)。
希望这会有所帮助。