我已经为学生创建了一个成绩结构体,并尝试重载'<<'运算符。
我猜测这与过载没有正确的地图语法有关,就像下面的那个。
// Sample output:
a12345678
2 //number of elements in map
COMP3512 87
COMP3760 68
struct Grades {
string id; // student ID, e.g,, a12345678
map<string, int> scores; // course, score, e.g. COMP3512, 86
};
我之前曾经重载过operator<<
以独立获取信息。
ostream& operator<<(ostream& os, const Grades g) {
return os << g.id << '\n' ...
// return os << g.id << '\n' << g.scores; produces an error
}
我猜测这与过载没有正确的地图语法有关,就像下面的那个。
ostream& operator<<(ostream& os, const map<string, int>& s) {
for (auto it = s.begin(); it != s.end(); ++it)
os << (*it).first << ' ' << (*it).second << endl;
return os;
}
是否有一种方法可以通过一个重载函数来生成示例输出,还是我需要使用当前的两个实现:一个用于map:grades.scores,另一个用于string:grades.id?
感谢您的帮助。
<<
运算符中,基本上会给您想要的结果。>>
不应该产生输出。您到底在问什么? - Angew is no longer proud of SO