c++中使用const char*作为映射键的正确方法

Right way to use const char* as map key in C++

本文关键字:映射 方法 const char c++      更新时间:2023-10-16

我需要将组件id映射到c++游戏引擎中的组件。这些组件id应该是字符串。我不能使用std::string,因为我需要

极高的性能性能尽可能高,同时又不影响开发的便利性,而且每次从const char*std::string的转换都太昂贵了。

根据这个答案,使用const char*会导致比较问题。什么是正确的方法来使用c风格字符串作为映射键,没有那些比较问题?

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

如果要比较的字符串值是固定的,并且数目是固定的,那么最好为它们计算散列值,并将它们用作映射中的键。这可以大大加快搜索速度,尽管您必须为搜索输入计算散列值。