首页 > 解决方案 > 在哈希图中实现分配运算符重载

问题描述

我正在用 C++ 实现哈希图,但是,我想做一个操作

myMap["key"] = value; 

我该如何实施?谢谢!

标签: c++

解决方案


首先,您需要实现地图的索引访问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;
}

推荐阅读