如何显示存储在 Multimap 中的类数据成员



>这里是代码

class student
{
int num;
string name;
float marks;
public:
void add()
{
    cout << "Enter the num name and marks:" << endl;
    cin >> num >> name >> marks;
}
void display()
{
    cout << num << endl;
    cout << name << endl;
    cout << marks << endl;
}
};
void main()
{
student ss;
multimap<int,student> st;
multimap<int,student>::iterator itr;
    ss.add();
    st.insert(make_pair(1000, ss));
for (itr = st.begin(); itr != st.end(); itr++)
{
    cout << itr->second; // its showing ERROR 
}
}

错误是错误 C2679 二进制"<<":未找到采用类型为"student"的右侧操作数的运算符(或没有可接受的转换)firstmultimap
如何解决这个问题

要显示学生对象,您需要重载运算符<<

我已经使运算符重载函数成为student类的朋友,因此可以在不创建对象的情况下调用它。

另外,请在 MSDN 上查看此示例。

例:


#include<iostream>
#include<map>
#include<string>
using namespace std;
class student
{
private:
    int num;
    string name;
    float marks;
public:
    void add()
    {
        cout << "Enter the num name and marks:" << endl;
        cin >> num >> name >> marks;
    }
    void display()
    {
        cout << num << endl;
        cout << name << endl;
        cout << marks << endl;
    }
    friend ostream &operator << (ostream &output, const student &s)
    {
        output << "Num: " << s.num << "nName: " << s.name << "nMarks: " << s.marks << endl;
        return output;
    }
};
int main()
{
    student ss;
    multimap<int, student> st;
    multimap<int, student>::iterator itr;
    ss.add();
    st.insert(make_pair(1000, ss));
    for (itr = st.begin(); itr != st.end(); itr++)
    {
        cout << itr->second;
    }
    // Using Range based for loop
    // for(const auto &i : st)
    //     cout << i.second;
    return 0;
}

最新更新