![](/img/trans.png)
[英]No match for “operator-” on reverse_iterator for std::map
[英]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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.