【发布时间】:2014-07-25 22:02:58
【问题描述】:
在 C++ 中,您可以使用 std::map 创建地图“容器”。
在我的例子中,键是字符串,元素是整数。 (std::map<string, int>)
我想知道的是地图如何通过使用[] 运算符检索它们的元素
用字符串。
地图是否只是将输入的字符串与我声明的元素的现有字符串键集合中的 ALL 进行比较?如果是这种情况,那么如果我需要一种从一长串字符串中检索我需要的元素的最佳方法,那肯定会显得很慢。
一种更快的按字符串索引的方法是对字符串中的每个字符使用包含 256 个相同类型的链表的链表。这意味着为了让我检索我的元素,我所要做的就是说[char 1]->[char 2]->...[char n]->element.
那里的速度将取决于字符串的长度,或者你指向下一个字符的次数。
编辑:我刚才描述的这个过程被称为Trie,它不是 std::map 使用的。
如果std::map<string, element_type>不使用这个方法,那它是如何工作的呢?如果我碰巧添加了大量的键,是否值得使用?
如果我的问题不清楚,请告诉我,以便我更改。我只需要知道映射中键的数量是否会减慢访问过程,以及映射如何匹配它们的元素。
【问题讨论】:
标签: c++ string optimization map