关于stl::set的运用问题

qq342634980 2011-04-02 01:53:21
struct Person{
string name;
unsigned char level;
unsigned long score;
Person(char *_name,unsigned char _level,unsigned long _score)
{
name=_name;
level=_level;
score=_score;
}
void setLevel(int _level)
{
this->level=_level;
}
int getLevel()
{
return level;
}
void setScore(int _score)
{
score=_score;
}
bool operator < (const Person& first) const
{
bool temp=false;
if(name!=first.name)
temp=(score>first.score||(score==first.score&&level>first.level));
return temp;
}
};
void show(Person person)
{
cout<<person.name<<" "<<(int)person.level<<" "<<person.score<<endl;
}
void main()
{
set<Person> p;
set<Person>::iterator itr;
Person p1("阿飞",87,1000)
p.insert(p1);
p.insert(Person("逢灯",87,2000));
p.insert(Person("德",97,1000));
for_each(p.begin(),p.end(),show);
getchar();
}
代码在怎么修改,可以实现对象p1的level和socre数据修改后,set中会顺序会被重新排列了?
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengzhe 2011-04-02
  • 打赏
  • 举报
回复
删了再插吧
Saingel 2011-04-02
  • 打赏
  • 举报
回复
set只要别修改参与比较的成员问题不大
qq342634980 2011-04-02
  • 打赏
  • 举报
回复
谁能给个精辟点的stl库对自定义对象进行排序、数据变更后自动排序的代码学习下
ghosty_hand 2011-04-02
  • 打赏
  • 举报
回复
set不允许直接修改元素值的,如果修改,需要先删除原有的,再插入修改后的
Jim_King_2000 2011-04-02
  • 打赏
  • 举报
回复
set中的元素是不可以修改的。如果一定要改,就删除后再插入新的。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧