簡體   English   中英

映射迭代器不匹配運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM