2016-09-30 51 views
0

我想從for循環中的地圖中獲取元素。繼cppreference的例子,我試試這個:`[]`運算符導致在地圖上編譯錯誤

#include <iostream> 
#include <map> 

using namespace std; 

int main() 
{ 
    map<int, int> mapping; 

    mapping.insert(pair<int, int>(11,1)); 
    mapping.insert(pair<int, int>(12,2)); 
    mapping.insert(pair<int, int>(13,3)); 

    for (const auto &it : mapping) 
     mapping[it]++; 


    cout << "array: "; 
    for (const auto &it : mapping) 
     cout << it.second << " "; 

    return 0; 
} 

其中給出用gcc以下編譯錯誤:如果我理解正確的問題是,auto被解析爲std::pair<const int, int>針對

main.cpp: In function 'int main()': 
main.cpp:15:16: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and 'const std::pair<const int, int>') 
     mapping[it]++; 

沒有定義[]運算符。我想知道是否有辦法讓這個工作。

查看完整的編譯錯誤here

+0

與具有類似C++語法的語言不同,它不是關鍵。相反,「它」是地圖中的實際對。 –

回答

6

如何只

for (auto &it : mapping) 
    ++it.second; 

你的第一個循環?

+0

解決了這個問題。謝謝。 – Stereo