将新元素插入哈希表?

时间:2015-01-30 01:16:05

标签: c++ data-structures containers

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

哈希表是stringsvector<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

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

1 个答案:

答案 0 :(得分:1)

老实说,我不知道该错误来自哪里(虽然我怀疑它是某种不幸的括号错误),但该代码的意图与以下相当简单的代码之间没有区别:

unorderedMap[element].push_back(unsigned_number_associated_with_element);

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