在不支持c++11的情况下,如何通过键访问const map的值

【字号: 日期:2023-05-01浏览:11作者:雯心

问题描述

代码如下:

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)

问题解答

回答1:

把key也修改为const试试。

回答2:

没有了,在不支持C++11的情况下只能find()

相关文章: