哈希运算符 [] 重载 table

Operator [] overload for hash table

我想重载 [] 运算符以在哈希中使用 table 我必须做作业。 我正在使用包含对的列表向量。std::vector <std::forward_list<std::pair<std::string, int>>> 我希望操作员做的是 return 给定对的另一部分,例如,如果有一对 ("test" , 21) ,通过编写 vectorname["test"]我应该得到 21 ,或者如果我要写 vectorname["test"]=22 它应该修改 pair.Also ,不应该有相同的键,或者如果它们是,只有第一个会被考虑在内。 这是我的第一个堆栈溢出问题,抱歉,如果我没有很好地解释事情。

为了做这种事情,你需要让你的 operator[] return 一个 reference-like 类型可以分配给(为了更新 table ) 或刚刚使用(在读取散列 table 时)。您需要决定的关键是当密钥 not 出现在 table.

中时该怎么办
  • 立即将密钥添加到 table。这意味着当您尝试读取不存在的键时,您将使用默认值将其添加到 table(这就是 STL 映射的工作方式)
  • 在实际分配给元素之前不要添加键。这是更多的工作,但允许您在没有默认构造函数的情况下拥有键值。

在前一种情况下,您只是 return 对元素值的实际引用。在后一种情况下,您需要实现自定义的 element_ref class 可以分配给 (operator=) 或者可以隐式转换为元素值类型 (operator int in你的情况)。