在不支持c++11的情况下,如何通过键访问const map的值
大家讲道理
大家讲道理 2017-04-17 13:50:25
[C++讨论组]

代码如下:

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)

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
怪我咯

把key也修改为const试试。

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号