【发布时间】:2014-01-22 00:49:06
【问题描述】:
我正在编写一个具有不允许分配的高性能线程的应用程序。我有一张看起来像这样的地图:
map<String, MyCustomClass> objectCollection;
其中 String 是 std::string 的自定义包装器。我希望能够在高优先级线程上编写这样的代码:
int someValue = objectCollection["some string"].value;
当我这样做时,对数组的索引会导致构造一个字符串,这需要分配。我的想法是,我可能能够为我的地图定义一个自定义比较器,它可以接受一个 const char*,并且能够与一个字符串的 c 字符串胆量进行字符串比较。这可能吗?它看起来如何?
我可以用 String 实例做这样的事情:
String strTest = "";
const char* chars = strTest.chars();
【问题讨论】:
-
“某个字符串”是否总是一个常量或者可以是任何
const char*? -
如果你需要速度,你考虑过
std::unordered_map吗? -
@Nate Kohl "some string" 将按字面意思编程到代码中。绝对是一个常数。
-
@Borgleader 这将如何帮助我解决这个问题?
-
是否所有的下标字符串都是提前知道的?你可以看看完美的哈希函数生成器(gperf)。
标签: c++ string memory-management