在C ++中使用const char *作为map键的正确方法

时间:2014-07-16 12:45:35

标签: c++ string performance map key

我需要将组件ID映射到C ++游戏引擎中的组件。那些组件ID应该是字符串。我不能使用std :: string,因为我需要尽可能高的极高性能性能而不会过多地损害开发的容易性,并且每次都要从const char*转换为std::string我查了一个条目太昂贵了。

根据this answer,使用const char*会导致比较问题。 使用C风格字符串作为地图键的正确方式是什么?没有这些比较问题?

1 个答案:

答案 0 :(得分:2)

您可以提供自己的Comparator类作为std::map的模板参数,以实现基于c样式字符串的比较(例如,使用std::strcmp

如果你有固定的字符串值要与之比较,以及固定数量的字符串,你可能会更好地关闭calculating hash values for them,并将它们用作地图中的键。这可以加快搜索速度,但您必须计算搜索输入的哈希值。