c++ - 在 C++ 中为 STL 映射重载 [ ] 运算符

标签 c++ dictionary

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 fafb 是本地对象,那么当您从函数返回时它们将被销毁。所以你不应该从函数返回 mymap,因为一旦函数返回,用作键的对象就不存在了。

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

相关文章:

c# - 将 char * 参数传递给 C# 函数

google-chrome - 将 Chrome (hunspell) 中的两个 BDIC 文件合二为一

arrays - 如何从数组字典中的整数数组中获取最大值

c++ - extern "C"变量名 "virtual"

c++ - O(1) 中 unordered_set 中的随机元素

python - 调用存储在字典中的 lambda 时出现问题

python - 字典到数据框

ios - 在 Swift 中将数组保存到文件

c++ - 提升 asio 服务器客户端。连接局域网中的两台计算机

c++ - virtual对类模板成员使用的影响