没有可行的超载运算符[]
No viable overloaded operator[] for type
我已经定义了一种类型:
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'
如何解决此问题?
问题是g
是const graph&
。索引运算符[]
可能需要为地图创建一个新元素,从而将其突变。这就是为什么您不能在const graph&
上使用它(问题是const
)。
您可以使用g.at(key)
,而不是如果不存在键,则会引发异常。
相关文章:
- 虚拟超载运算符>>和<<
- 为什么我的超载"+"运算符返回的总额错误?
- 如何包括C 模板类的非成员运算符 - 超载
- 类型长的长度和未解决的超载函数类型的类型的操作数与二进制运算符
- 超载 =具有多个术语的运算符
- 运算符超载的Lambda表达式
- 我可以防止与null与超载运算符==进行比较
- 超载 运算符添加const char
- 是否有一种方法可以在超载运算符函数中接触默认运算符函数
- 运算符超载与派生类
- 如何将从C 模板继承的类超载分配运算符
- 这个[]运算符如何超载
- 具有[]运算符超载的模板类
- 堆上的模板类超载运算符
- 我想将超载运算符添加到派生类中
- C 超载相等运算符.我应该写自己的功能以接受通过参考或值传递的参数
- 此代码运算符超载中的错误是什么?
- C 17:始终调用用户定义的构造函数,并且运算符 超载不适用于儿童课程
- 运算符超载 - 在左侧与int相乘
- 运算符超载:成员与非会员当仅涉及相同类型的对象时