我已经定义了一个类型:
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'
如何解决此问题?
答案 0 :(得分:7)
问题是g
是const graph&
。索引操作符[]
可能需要为映射创建一个新元素,从而使其发生变化。这就是为什么你不能在const graph&
上使用它(问题是const
)。
如果密钥不存在,您可以使用g.at(key)
代替抛出异常。