gpt4 book ai didi

c++ - 当类对象用作映射的键​​时排序

转载 作者:行者123 更新时间:2023-11-27 23:15:06 26 4
gpt4 key购买 nike

我创建了一个包含学生详细信息(姓名和 ID)的类(class),我想使用该类(class)的对象作为键值进行映射。我有一些问题

  1. 我在编译这段代码时遇到错误。请告诉我解决方案?

  2. 由于 map 是有序的,这里我将对象作为键值,它同时具有字符串和数字,这取决于键值将被排序的内容?

  3. 我用过

    cout<<(*ii).first<<'\t'<<(*ii).second<<endl;

    打印值。这是打印类对象值的正确方法吗

    ( (*ii).first)?

请在下面找到我的代码

#include<iostream>
#include<map.h>
#include<utility>
#include<string.h>

using namespace std;

class A
{
private:
char name[10];
int id_no;
public:
A(char *myname,int no):id_no(no)
{
strcpy(name,myname);
}
void output()
{
cout<<name<<'\t'<<id_no<<endl;
}
};

int main()
{
map<A,int> e;
A a("abc",10);
A b("xyz",1);

e.insert(pair<A,int>(a,123));
e.insert(pair<A,int>(b,345));


for(map<A,int>::iterator ii = e.begin(); ii!= e.end(); ii++)
{
cout<<(*ii).first<<"rank is"<<(*ii).second<<endl;
}
return 0;
}

最佳答案

#include<iostream>
#include<map>
#include<utility>
#include<string>

using namespace std;

class A
{
private:
string name; // there is no reason not using string here
int id_no;
public:
A(char *myname, int no) : name(myname), id_no(no)
{
}

void output()
{
cout<<name<<'\t'<<id_no<<endl;
}

const string & getName() const
{
return name;
}

bool operator<(const A &right) const // A must be comparable to be used as keys
{
return name < right.name;
}
};

int main()
{
map<A,int> e;
A a("abc",10);
A b("xyz",1);

e.insert(pair<A,int>(a,123));
e.insert(pair<A,int>(b,345));

for(map<A,int>::iterator ii = e.begin(); ii!= e.end(); ii++)
{
cout<<(*ii).first.getName() << " rank is " <<(*ii).second<<endl;
}
return 0;
}

关于c++ - 当类对象用作映射的键​​时排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com