类型没有可行的重载operator []

时间:2016-12-13 20:35:41

标签: c++

我已经定义了一个类型:

typedef unordered_map<string, list<string>> Graph;

我有一把钥匙:

string v = "A12";

当我尝试使用密钥访问列表时:

for (auto w = g[v].begin(); w != g[v].end(); w++)
    {

        ...
    }

g是类型Graph,我收到错误:

No viable overloaded operator[] for type 'const Graph'

如何解决此问题?

1 个答案:

答案 0 :(得分:7)

问题是gconst graph&。索引操作符[]可能需要为映射创建一个新元素,从而使其发生变化。这就是为什么你不能在const graph&上使用它(问题是const)。

如果密钥不存在,您可以使用g.at(key)代替抛出异常。