拥抱STL - 类/结构体元素查询与排序
【摘要】 我觉得,如果容器用来放基础数据类型,那真是浪费。 怎么说也要放个结构体或者类吧。
//先来看一下元素配置,这个栗子是将类对象塞进 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)