【发布时间】:2010-12-23 00:20:01
【问题描述】:
我知道单个地图查询最多需要 log(N) 时间。但是我想知道,我已经看到很多使用字符串作为映射键的示例。例如,将 std::string 关联为映射的键而不是 int 的性能成本是多少?
std::map<std::string, aClass*> someMap; 与 std::map<int, aClass*> someMap;
谢谢!
【问题讨论】:
-
很容易自己写一个小测试我会想到的。然而,整数总是至少和字符串一样快,而且可能快得多。
-
下一个问题:如果您将映射更改为采用整数而不是字符串,那么您自己进行转换会损失多少性能?
-
@David:这取决于很多事情,但也可能相当多。每次插入和搜索操作的附加成本为
O(L)(L:字符串大小),但整个操作只执行一次:O(L)+O(log N),这将是O(L)或O(log N),以较大者为准。如果key保存为字符串,则在所有节点中进行比较,代价为O(L)*O(log N)即O(L*log N)
标签: c++ performance stl