c++中使用const char*作为映射键的正确方法
Right way to use const char* as map key in C++
我需要将组件id映射到c++游戏引擎中的组件。这些组件id应该是字符串。我不能使用std::string,因为我需要
const char*
到std::string
的转换都太昂贵了。
根据这个答案,使用const char*
会导致比较问题。什么是正确的方法来使用c风格字符串作为映射键,没有那些比较问题?
你可以为std::map
提供你自己的Comparator
类作为模板参数,实现基于c风格字符串的比较(例如使用std::strcmp
)
如果要比较的字符串值是固定的,并且数目是固定的,那么最好为它们计算散列值,并将它们用作映射中的键。这可以大大加快搜索速度,尽管您必须为搜索输入计算散列值。
相关文章:
- 使用std::函数映射对象方法
- 在C++中初始化向量映射的最有效方法
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 将一系列数字映射到 CPP 中的值的简单方法
- 使用迭代器替换映射中的常量项的方法
- C++-将对象(如字符串)映射到表中成员函数的正确方法
- 在矢量中查找映射键的最快方法
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- C 正确的方法来初始化和处理映射指针
- 消息映射如何与 SendMessage() 方法交互?
- 检查是否存在多维映射的元素的最快方法是什么
- 在映射最小值和最大值时从未签名转换为已签名的最佳方法?
- 处理对存储在私有映射中的值的封装访问的标准方法,而不破坏C++中的抽象
- 使用静态映射在C++中缓存数据的推荐方法是什么
- C++通过映射并使用中的方法从基类实现派生类
- C++将一组整数变量映射到值的有效方法
- 转换/映射方法最佳做法