我需要将组件ID映射到C ++游戏引擎中的组件。那些组件ID应该是字符串。我不能使用std :: string,因为我需要尽可能高的极高性能性能而不会过多地损害开发的容易性,并且每次都要从const char*
转换为std::string
我查了一个条目太昂贵了。
根据this answer,使用const char*
会导致比较问题。 使用C风格字符串作为地图键的正确方式是什么?没有这些比较问题?
答案 0 :(得分:2)
您可以提供自己的Comparator
类作为std::map
的模板参数,以实现基于c样式字符串的比较(例如,使用std::strcmp
)
如果你有固定的字符串值要与之比较,以及固定数量的字符串,你可能会更好地关闭calculating hash values for them,并将它们用作地图中的键。这可以加快搜索速度,但您必须计算搜索输入的哈希值。