我正在尝试使用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;
}
答案 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]