我需要帮助理解 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/