代码如下:
map<string, unsigned> create_checkType_map()
{
map<string,unsigned> m;
m["a"] = 0;
m["b"] = 1;
m["c"] = 2;
return m;
}
const std::map<string, unsigned> CHECKTYPE = create_checkType_map();
string checkType="a";
unsigned num= CHECKTYPE[checkType];//报错,下标操作有可能修改map
网上查到的,是建议使用map.at(),但是只能在 支持c++11的标准下使用。在不支持c++11的标准下,用什么方式可以访问到 const map的值?
/找到一种方法*/
可以通过find来获取指向对应key的迭代器,然后使用迭代器的first,和second来获取值,代码如下:
unsigned num= CHECKTYPE[checkType];//报错,下标操作有可能修改map
//改成
map<string,unsigned>::const_iterator itoritor = CHECKTYPE.find(checkType);//注意要使用const迭代器,不然会报错
if (itor!=CHECKTYPE.end())
{
unsigned num = itor->second;
}
如果大家有更简便的方式,欢迎提供啊!!
参考连接:
C++ map access discards qualifiers (const)