码迷,mamicode.com
首页 > 其他好文 > 详细

stl::map之const函数访问

时间:2016-08-05 00:27:52      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

  如何在const成员数中访问stl::map呢?例如如下代码:

string ConfigFileManager::MapQueryItem(const string& name) const {
    if (_map_name_value.find(name) != _map_name_value.end()) {
        return _map_name_value[name];
    }
    return "";
}

  上面的代码会报错:error C2678: 二进制“[”: 没有找到接受“const std::map<_Kty,_Ty>”类型的左操作数的运算符(或没有可接受的转换)

  这个错误说明const函数是不能直接访问map的,有如下三种方法解决:

(1)去掉函数const属性

  这种方法改变了原有设计,肯定是不行的。

(2)将stl::map成员声明为mutable

  这种方法更改了变量的特征,不过是可行的也符合逻辑的。

(3)通过const迭代器访问map成员

  这种方法最好,也是STL自带支持的const访问方式。参考代码修改如下:

string ConfigFileManager::MapQueryItem(const string& name) const {
    map<string, string>::const_iterator cit = _map_name_value.find(name);
    if (cit != _map_name_value.end()) {
        return cit->second;
    }
    return "";
}

stl::map之const函数访问

标签:

原文地址:http://www.cnblogs.com/kuliuheng/p/5738703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!