map作为const引用的问题
来源:互联网 发布:mac文件储存在哪里 编辑:程序博客网 时间:2024/05/29 15:56
string generateCover(const vector<int>& v, const map<int, string>& id_image){string cover;for (size_t i = 0; i < v.size(); i++){if (id_image.count(v[i])){cover.append(id_image[v[i]]);}if (i != v.size() - 1){cover.append(",");}}return cover;}
编译时提示
错误 1 error C2678: 二进制“[”: 没有找到接受“const std::map<int,std::string,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>”类型的左操作数的运算符(或没有可接受的转换) d:\program\vs2013\oj\oj\oj.cpp 18 1 OJ
2 IntelliSense: 没有与这些操作数匹配的 "[]" 运算符
操作数类型为: const std::map<int, std::string, std::less<int>, std::allocator<std::pair<const int, std::string>>> [ const int ] d:\program\vs2013\OJ\OJ\oj.cpp 18 25 OJ
是因为简单来说,map的[]运算符会在索引项不存在的时候自动创建一个对象,有可能会改变map本身,所以不能够用在一个const map上。
替换成迭代器形式,代码如下:
string generateCover(const vector<int>& v, const map<int, string>& id_image){string cover;for (size_t i = 0; i < v.size(); i++){map<int, string>::const_iterator it = id_image.find(v[i]);if (it != id_image.end()) { cover += it->second; }if (i != v.size() - 1){cover.append(",");}}return cover;}
0 0
- map作为const引用的问题
- byte[]作为Map key的问题
- const 引用导致问题
- [第二节]C++ 引用 函数调用作为左值 用const限定引用 返回堆中变量的引用
- 引用 Map 数据结构的排序问题
- 作为函数参数的临时变量的引用必须是const的
- 作为函数参数的临时变量的引用必须是const的
- 临时变量作为非const的引用进行参数传递引发的编译错误
- c++中临时变量不能作为非const的引用参数
- c++中临时变量不能作为非const的引用参数
- 已解决:函数重载 原因:临时变量不能作为非const的引用参数传递
- c++中临时变量不能作为非const的引用参数
- [转]c++中临时变量不能作为非const的引用参数
- c++中临时变量不能作为非const的引用参数
- c++中临时变量不能作为非const的引用参数
- c++中临时变量不能作为非const的引用参数
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- byte[]数组作为map的key的问题
- XMPP客户端库Smack
- perl 自动登录盈盈理财
- MySQL存储引擎的那些事儿
- javascript笔记
- 一个简单的下载网页上图片的程序
- map作为const引用的问题
- C9014
- ANT标签
- Activity的LaunchMode
- ccd摄像机基础知识
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- 解决Studio引用友盟引起的/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
- Android下修改hosts文件
- C5401