zoukankan      html  css  js  c++  java
  • stl::map之const函数访问

      如何在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 "";
    }
  • 相关阅读:
    React Native之(支持iOS与Android)自定义单选按钮(RadioGroup,RadioButton)
    React Native之TextInput的介绍与使用(富文本封装与使用实例,常用输入框封装与使用实例)
    drf框架
    drf框架
    drf框架
    drf框架
    drf框架
    drf框架
    drf框架
    drf框架
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/5738703.html
Copyright © 2011-2022 走看看