将新元素插入哈希 table?

Insert new element into hash table?

    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);

散列table 是stringsvector<unsigned> 的table(键的类型为string)。 element 是字符串类型。

代码应该执行以下操作:

1) 检查散列table

中是否存在键element

2) 如果没有,创建一个新条目。如果是,请执行下一步。

3) 将 element 推入条目的向量。

代码编译正常,但是 运行 它给我一个错误:

error: attempt to subscript container with out-of-bounds index 22464, but container only holds 22464 elements

有人知道为什么吗?注释掉最后一行会使错误消失。

老实说,我不知道那个错误是从哪里来的(尽管我怀疑这是某种不幸的括号错误),但该代码的意图与以下更简单的代码之间没有区别:

unorderedMap[element].push_back(unsigned_number_associated_with_element);

除了上述可能更快(如果元素不存在,它只会执行一次查找而不是两次查找)并且肯定更易于阅读和调试。