映射迭代器与运算符不匹配
Map iterator no match for operator
>我在迭代器中与运算符不匹配map
。当我尝试制作迭代器时,它指向映射 end-1。
#include <iostream>
#include <map>
int main()
{
std::map<char,int> mymap;
mymap['b'] = 100;
mymap['a'] = 200;
mymap['c'] = 300;
// show content:
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end()-1; ++it){
std::cout << it->first << " => " << it->second << 'n';
}
return 0;
}
此语句
mymap.end()-1
仅对随机访问迭代器合法,但std::map::iterator
是双向迭代器。如果要跳过最后一个元素,请使用std::prev()
for (std::map<char,int>::iterator it=mymap.begin(); it!=std::prev( mymap.end() ); ++it)
尽管总是计算它效率不高,但它应该是:
auto end = std::prev( mymap.end() );
for (auto it=mymap.begin(); it!=end; ++it) ...
请注意,要使其正常工作,您必须确保地图中至少有一个元素。如果您不想跳过最后一个元素,请完全删除-1
。
地图迭代器没有运算符,但这并不重要,因为如果您想显示所有内容,应该只是it!=mymap.end();
相关文章:
- 在使用累加时,C++中的运算符+不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- 不显示匹配运算符
- 映射迭代器与运算符不匹配
- 与"运算符<<"C++不匹配
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 与标准中的"运算符<<"不匹配
- 运算符不匹配*=
- 不断收到错误" 与"运算符>>不匹配";
- 编译我的 3 个文件时,我收到错误,说"运算符="不匹配
- C++ 模板与运算符<不匹配
- 与"运算符="不匹配
- 代码块编译错误与运算符<<不匹配
- 错误:运算符 [] 不匹配。在比较列表中的 int 和 int 时<int>,
- 解决错误:运算符 [] 不匹配
- 错误:与"运算符>>"不匹配(操作数类型为"std::istream
- 与"运算符[]"不匹配(操作数类型为"std::unique_ptr<std::vector<int> >"和"int")
- 错误:与“运算符 []”不匹配
- C++ 设置:不匹配 - 运算符