拥抱STL - 类/结构体元素查询与排序

举报
看,未来 发表于 2020/12/30 00:51:46 2020/12/30
【摘要】 我觉得,如果容器用来放基础数据类型,那真是浪费。 怎么说也要放个结构体或者类吧。 //先来看一下元素配置,这个栗子是将类对象塞进 list 容器,半年前某个项目里的代码、 W_RinkData::W_RinkData(int temp,int ID,int Dif,int Score) { this->temp = temp; this->Diff = Dif; t...

我觉得,如果容器用来放基础数据类型,那真是浪费。
怎么说也要放个结构体或者类吧。

//先来看一下元素配置,这个栗子是将类对象塞进 list 容器,半年前某个项目里的代码、

W_RinkData::W_RinkData(int temp,int ID,int Dif,int Score)
{ this->temp = temp; this->Diff = Dif; this->ID = ID; this->Score = Score;
}
//这是元素类的结构,可以看出来这是个排行榜


//用来排序的算法,按分数排序
int compare(W_RinkData &infoA,W_RinkData &infoB)
{ return infoA.Score>infoB.Score;
}

//自己封装个排序函数
void X_RinkList::mysort()
{ B_Sql *sql = B_Sql::instence("User.db"); int Count = sql->CountCow("select * from User_Rink_MSG"); for( int i = 0; i<Count; i++) { QString ID = sql->PrintTable(QString("select id from User_Rink_MSG where temp = %1").arg(i)); QString Difffff = sql->PrintTable(QString("select difficult from User_Rink_MSG where temp = %1").arg(i)); QString Scoreeee = sql->PrintTable(QString("select score from User_Rink_MSG where temp = %1").arg(i)); int id = ID.toInt(); int dif = Difffff.toInt(); int score = Scoreeee.toInt(); W_RinkData aa(i,id,dif,score); rink_list.append(aa); qSort(rink_list.begin(),rink_list.end(),compare);	//重点看这行,标准中为sort函数 }
}

//再看看怎么把值取出来
W_RinkData node;
for(it = rink_list.begin();it != rink_list.end();it++)
{ node = *(it);	//构造函数记得写 cout<<node.score<<endl;
}


//然后再说说搜索
为什么就那么喜欢find_if,放下执念吧,
find_if也是用个迭代器去遍历取值比对,既然咱已经可以自己取值了,咱就写个自己的find_if呗。

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

如果觉得我的方法不好(我这毕竟是伪代码)推荐这篇:运算符重载实现排序及查找,写的挺好,就是测试的时候可能会有点出入。

文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。

原文链接:lion-wu.blog.csdn.net/article/details/105520742

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200