map::operator[]
is not deprecated.
I will guess that you are attempting to call the operator in a context where derivMap
is const
. map::operator[]
does not have a const
overload, because it can modify the map by inserting an element when one matching the key isn't present. map::at()
on the other hand, does have a const
overload because it is designed to throw when an element is not found.
void foo(std::map<int, int>& m)
{
int n = m[42]; // OK
}
void bar(const std::map<int, int>& m)
{
int n = m[42]; // ERROR
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…