哈希运算符 [] 重载 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你的情况)。
我想重载 [] 运算符以在哈希中使用 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你的情况)。