c++ - 在哈希图中实现分配运算符重载
问题描述
我正在用 C++ 实现哈希图,但是,我想做一个操作
myMap["key"] = value;
我该如何实施?谢谢!
解决方案
首先,您需要实现地图的索引访问operator []
,它应该返回对相应值的引用。
然后使用该引用,您可以直接更新该值。
注意:通常在 C++ 中,operator []
当一个条目不存在时,地图会自动创建一个条目。
最好先创建辅助方法find()
,它应该返回一个(可能为空的)迭代器,然后insert()
创建一个新条目。然后operator []
可以简单地实现为:
T& Map<T>::operator[] (Key const& key) {
auto it = find(key);
if it == end() {
it = insert(std::make_pair(key, T::value_type()));
}
return it->second;
}