Я не уверен, как получить доступ к карте внутри структуры Студент Некоторые примеры, которые я ищу, говорят -> сначала -> второй , но это не скомпилировано.Как получить доступ к карте?
Как я могу получить доступ к карте внутри структуры? или перегрузка оператора неверна?
ошибка говорит ‘->’ 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;
}
Вы должны использовать итератор, метод, как 'find' или' [] 'для доступа к элементу вашей карты неясно, что вы пытаетесь сделать здесь. Я думаю, что вы хотите что-то вроде 'for (auto & it: g.scores) cout << it-> first << it-> second;' в методах 'ostream' и' istream' – EdChum
@EdChum извините, если его неясно, в основном, что я пытаюсь сделать перегружает оператор >> и << сохраняет и выводит данные внутри структуры напрямую, моя единственная проблема - я не знаю, как получить доступ к карте STL .. Я знаю, если ее пара вы можете просто использовать .first и .second, но не уверены в карте. – XDProgrammer