在hashmap中实现赋值运算符重载 我正在研究C++中的哈希映射的实现,但是,我想做一个操作< /p> myMap["key"] = value;

在hashmap中实现赋值运算符重载 我正在研究C++中的哈希映射的实现,但是,我想做一个操作< /p> myMap["key"] = value;,c++,C++,我如何实现这一点? 谢谢 首先,您需要实现映射的索引访问操作符[],它应该返回对相应值的引用 然后使用该引用可以直接更新该值 注意:通常在C++中,map的运算符[]/COD>自动创建一个不存在的条目。 最好先创建助手方法find(),它应该返回一个(可能是空的)迭代器,然后创建一个新条目。然后,操作符[]可以简单地实现为: T& Map<T>::operator[] (Key const& key) { auto it = find(key); if

我如何实现这一点?
谢谢

首先,您需要实现映射的索引访问
操作符[]
,它应该返回对相应值的引用

然后使用该引用可以直接更新该值

注意:通常在C++中,map的<代码>运算符[]/COD>自动创建一个不存在的条目。

最好先创建助手方法
find()
,它应该返回一个(可能是空的)迭代器,然后创建一个新条目。然后,
操作符[]
可以简单地实现为:

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;
}
T&Map::operator[](键常量和键){
自动it=查找(键);
如果它==end(){
it=insert(std::make_pair(key,T::value_type());
}
返回->秒;
}

您是否希望它像标准库
映射一样工作,如果该键不存在条目,则默认初始化对象?是否要重载
运算符[]
?是,我已经实现了一个insert方法,考虑到了这一点,但我不知道在这里添加一个条件是否更好。您不需要
find
,而是想要
下限
,然后您有一个迭代器指向它应该去的地方,作为
insert
@Caleth的提示。是的,一些优化是可能的,除非是散列映射,它不是下限,而是散列+桶。