簡體   English   中英

地圖編譯錯誤 <int, int> :: iterator,運算符不匹配=

[英]compile error for map<int, int>::iterator, no match for operator =

我在main()函數中有以下代碼

map<int, int>::iterator myvar;

. . .

if (myvar == 1) { . . . }

但是當我編譯時,出現以下錯誤:

error: no match for âoperator==â in âmyvar == 1â

我從以前進行過此編譯的同事那里繼承了此代碼,因此我很好奇我的編譯器設置是否錯誤,或者我的Linux機器上沒有安裝所需的庫/軟件包。 有任何想法嗎?

我試過使用const_iterator而不是迭代器,但這似乎還不夠。 我也嘗試在聲明之前添加“ typename”,但這也無濟於事。

這是我的g ++行:

g++ -Wall -Werror test.cpp -o test

代碼不正確。 您不能將STL迭代器與整數進行比較。

如果要比較密鑰 ,請使用myvar->first訪問。 如果要比較映射的值 ,請使用myvar->second

您嘗試做的事情實際上沒有任何意義,迭代器不是您可以與之比較的值。 您可能想做的是:

for(auto it = myVar.begin(); it != myVar.end(); myVar.next()) {
    if(it == 1) {
        //do something with it
    }
}

或者,如果您只關心第一個值:

auto val = myVar.begin();
if(val == 1) {
    //use val
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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