stl::map之const函数访问
2016-08-04 22:50
197 查看
如何在const成员数中访问stl::map呢?例如如下代码:
上面的代码会报错: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 { 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 ""; }
相关文章推荐
- (转)A Beginner's Guide To Understanding Convolutional Neural Networks
- 顺序表应用1:多余元素删除之移位算法
- iOS中限制文本框输入内容
- 二叉排序树和双向链表
- 二叉树问题——寻找二叉树中两个节点的最近公共祖先
- 6、类再生
- Java 序列化
- exchange企业实战之WSB邮箱数据库备份
- 通过SQL注入实施DDOS攻击的方法
- 跟波利亚学解题(rev#3)
- 2016多校训练Contest6: 1010 Windows 10 hdu5802
- 最小生成树Prime->HDU1875
- 京东2016实习生招聘笔试详解
- Struts2与Struts1之间的区别和对比
- java GC 日志查看 gcviewer
- Javascript的this用法
- 测试模板
- django 快速搭建blog
- capacity()与size()的区别
- GreenDao讲义3:带你了解查询生成器和更加复杂的查询