将新元素插入哈希 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 是strings
和vector<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);
除了上述可能更快(如果元素不存在,它只会执行一次查找而不是两次查找)并且肯定更易于阅读和调试。
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 是strings
和vector<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);
除了上述可能更快(如果元素不存在,它只会执行一次查找而不是两次查找)并且肯定更易于阅读和调试。