错误:'operator []'不匹配?

时间:2017-06-21 09:28:53

标签: c++ c++11 stdvector stdmap

我正在尝试使用std::map访问key数据,但我收到了错误

  

错误:'operator []'不匹配(操作数类型为'const std :: pair'和'int')

#include <map>
#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<map<int, double>> mainData;
    for(int i = 0; i  < 10; i++) {
        map<int, double> data;
        data[1] = i;
        data[2] = i*2.0;
        data[5] = i*7.2;
        mainData.push_back(data);
    }
    for(auto& it1: mainData) {
        for(auto& it2: it1) {
            cout << it2.first  << "    " << it2.second << "\n";
            cout << it2[5] << "\n"; // Error occurs here
        }
        cout << "\n";
    }
    return 0;
}

4 个答案:

答案 0 :(得分:3)

我觉得你这里有拼写错误。我认为你打算访问it1而不是it2,因为it1实际上是地图而it2是地图中的对。

cout << it1[5] << "\n";

也许您应该使用不同的变量名称:

#include <map>
#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<map<int, double>> mainData;
    for(int i = 0; i  < 10; i++) {
        map<int, double> data;
        data[1] = i;
        data[2] = i*2.0;
        data[5] = i*7.2;
        mainData.push_back(data);
    }
    for(auto& map: mainData) {
        for(auto& pair: map) {
            cout << pair.first  << "    " << pair.second << "\n";
            cout << map[5] << "\n";
        }
        cout << "\n";
    }
    return 0;
}

答案 1 :(得分:1)

也许您打算使用ViewModel

答案 2 :(得分:0)

it2是std :: pair(http://www.cplusplus.com/reference/utility/pair/)。你的意思是1 [5]也许?实际上做it2 [x]无法正常工作,那么你所制作的代码就会出现问题

答案 3 :(得分:0)

因为std对没有[]运算符,可能你的意思是1 [5]而不是it2 [5]