![](/img/trans.png)
[英]error: no match for 'operator=' (operand types are 'std::map<int, double>::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.