auto iterator = unorderedMap.find(element);
if (iterator == unorderedMap.end()) { //If the element doesn't already exist in the table, create a new entry
iterator = unorderedMap.insert(make_pair((element), vector<unsigned>()).first;
}
iterator->second.push_back(unsigned_number_associated_with_element);
哈希表是strings
和vector<unsigned>
的表(密钥类型为string
)。
element
是字符串类型。
代码应该执行以下操作:
1)检查哈希表中是否存在密钥element
2)如果没有,请创建一个新条目。如果是,请执行下一步。
3)将element
推入条目的向量中。
代码编译正常,但运行它会给我一个错误:
error: attempt to subscript container
with out-of-bounds index 22464, but container only holds 22464 elements
任何人都知道为什么?注释掉最后一行会使错误消失。
答案 0 :(得分:1)
老实说,我不知道该错误来自哪里(虽然我怀疑它是某种不幸的括号错误),但该代码的意图与以下相当简单的代码之间没有区别:
unorderedMap[element].push_back(unsigned_number_associated_with_element);
除了上面的内容可能更快(如果元素不存在,它只会执行一次查找而不是两次),并且更容易阅读和调试。