我不确定如何在struct Student中访问地图
我查到的一些例子说->第一->第二
但这无法编译。
如何访问结构内部的map?
还是操作员超载是错误的?
错误显示‘->’ has non-pointer type
struct Student{
string id;
map<string, double> scores;
};
ostream& operator<<(ostream& os, const Student& g){
return os << g.id << '\n' << g.scores->first << '\n' << g.scores->second ;
}
istream& operator >>(istream& is, Student& g){
return is >> g.id >> g.scores->first >> g.scores->second;
}
int main() {
vector<Student> g_vec;
Student grades;
while(cin >> gd)
g_vec.push_back(grades);
for (auto& g : g_vec)
cout << g << endl;
}
最佳答案
.
和->
之间的主要区别是开始时具有的对象类型。当您拥有对象时,请使用.
;当您拥有指向对象的指针时,请使用->
如果您这样定义学生Student erik = ...
您将获得erik的ID,如下所示:erik.id
如果您这样定义erik:Student* erik = ...
你会得到他的身份证是这样的:erik->id
这就是错误的意思
但是您还有另一个问题,因为first
和second
不是为地图定义的,而是为地图元素定义的。您需要遍历地图才能执行所需的操作。我猜这样会更好
os << g.id << '\n'
for (auto& it : g.scores) {
os<< it.first << it.second << '\n' ;
}
关于c++ - 如何访问 map ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31044818/