class foo{
public:
int a, b, c;
double val;
foo(int a){
...
}
...
}
现在我想做的是:
map <foo*, double> mymap;
foo fa(2);
foo fb(4);
mymap[fa] = 1.0;
mymap[fb] = 2.0;
显然,我得到的错误是 [ ] 未定义类型 foo。但是我如何重载这个运算符呢?就此而言,我如何获得指向 foo 的指针?因为我假设它没有定义,因为 foo 是一个自定义类
最佳答案
key 必须是 foo*
类型。所以你需要这样写:
mymap[&fa] = 1.0;
mymap[&fb] = 2.0;
但请记住,if fa
和 fb
是本地对象,那么当您从函数返回时它们将被销毁。所以你不应该从函数返回 mymap
,因为一旦函数返回,用作键的对象就不存在了。
关于c++ - 在 C++ 中为 STL 映射重载 [ ] 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443293/