C++ 重载映射 [ ] 运算符

标签 c++ templates dictionary overloading brackets

我需要帮助理解 2 个重载运算符声明。

template<class KEY, class T>
const T& Map<KEY, T>::operator [](const KEY& key) const { }

template<class KEY, class T>
T& Map<KEY, T>::operator [](const KEY& key) { }

第一个[]用于访问值/返回值,即 std::cout<<m["x"]<<std::endl;

第二个[]用于分配,即 m["x"] = 1;

我的问题与第二个 [] 有关.如果我要做m["z"] = 10 ,如何10存储为与键关联的值 z ?查看函数声明,我只看到键,没有看到值。

我试过做 m_value = T(); ,但我不确定 T() 是什么。

谢谢

最佳答案

函数返回一个引用:

template<class KEY, class T>
T& Map<KEY, T>::operator [](const KEY& key) { }
 ^ that means "reference"

这将是对存储在 map 中的对象的引用。分配给引用将分配给该对象。

关于C++ 重载映射 [ ] 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28830055/

相关文章:

javascript 模板引擎保持对文本框等的关注?

c++ - 模板参数推导失败

c# - 以 KeyValuePair 作为键的 Dictionary 的糟糕性能 (C# .NET)

arrays - swift 4 : How many times an element from a String array occurs in a String?

c++ - 是否可以在 C++ 中构建没有依赖项的 DLL?

c++ - 分配后我必须在哪里释放内存?

c++ - 绕道从内核 Hook 用户模式功能

c++ - 在 C++ 中包装多个库的策略

templates - 如何在jade模板之间传递变量

python - 字典组合 - 不等数量的键和值