社区
VCL组件使用和开发
帖子详情
ListView 排序问题,求排序算法代码!谢谢
aniver
2003-09-14 10:11:23
ListView 排序问题,求排序算法代码!谢谢
...全文
90
14
打赏
收藏
ListView 排序问题,求排序算法代码!谢谢
ListView 排序问题,求排序算法代码!谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meCAD
2003-09-19
打赏
举报
回复
哇.我以前还自个写.刚想把那丢人现眼的东西拿出来时
就看到季老大的回复.受益匪浅
venfly
2003-09-19
打赏
举报
回复
季老大果然厉害,认真且热心,是我们学习的榜样!
zihan
2003-09-17
打赏
举报
回复
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <Classes.hpp>
#pragma argsused
using namespace std;
//---------------------------------------------------------------------------
class MStr
{
public:
string FStr;
int Count;
MStr():FStr(""){}
MStr(string NewStr, int NewCount):FStr(NewStr),Count(NewCount){}
};
bool operator == (const MStr& x,const MStr& y)
{
return x.Count == y.Count;
}
bool operator < (const MStr& x,const MStr& y)
{
return x.Count < y.Count;
}
typedef vector<MStr> STRVECTOR;
//---------------------------------------------------------------------------
class MSlove
{
public:
STRVECTOR StrVector;
void GetWords();
};
void MSlove::GetWords()
{
for(int i = 0; i < N; i++)
StrVector.push_back(MStr(Str, Count));
sort(StrVector.begin(), &StrVector[StrVector.size()]);
}
上面这个的功能表示如果你传入N个Str,和他的个数Count,那么就安装他的Count排序,如果不满足,你可以重载操作符实现,或者你重新定义MStr类,然后传入你的caption,就可以按照你的Caption(把它转换为整形类排序,否则仍然是你原来的结果)来排序了.排序后的结果就是你想要的顺序,然后输出到你的listview就可以了
aniver
2003-09-17
打赏
举报
回复
哦,行了,谢谢大家!不过我暂时不结贴先,再向大家请教2个问题。
1,CompareText(((TListItem*)Item1)->Caption, ((TListItem*)Item2)->Caption)这个函数并不能实际上比较出整数的大小,它只是按字符来排序。
比如:99,100,101用这个函数按大到小排序是99,101,100,按小到大排序是100,101,99。我想问的是有没有其他函数取代这个函数,更好的实现排序呢?
2,还有一个问题,int __stdcall CustomSortProc(long Item1, long Item2, long ParamSort,int comlun)对这个函数,我想多设置一个参数来控制列,不过不知道怎么样传参数给comlun。请大家帮帮忙。
ccrun.com
2003-09-15
打赏
举报
回复
向季老大学习ing...
aniver
2003-09-15
打赏
举报
回复
谢谢啦,明白啦!我晚上回去试试看,
jishiping
2003-09-15
打赏
举报
回复
函数的前3个参数为寄存器变量(放在寄存器中,不入栈),省去了入栈、出栈过程,速度
当然要快了。同时寄存器变量本身就比一般的变量速度快。
jishiping
2003-09-15
打赏
举报
回复
我的代码没有错啊,要错的话,我估计是你在CustomSortProc前面加上TForm1::了,将函数
变为Form的成员函数了。注意,这不是成员函数,而是一个单独的函数。
__stdcall 与 __fastcall 的区别:Windows函数都是使用__stdcall,至于__fastcall,帮
助上是这么写的,使用__fastcall时,函数的前3个参数为寄存器变量。寄存器变量会加快
速度。
aniver
2003-09-15
打赏
举报
回复
to楼上:我这里是这样的,出现函数参数不匹配,ListView1->CustomSort(CustomSortProc, 0);
对CustomSortProc报错。是不是照贴代码就行啦!
ccrun.com
2003-09-15
打赏
举报
回复
to楼上,季老大的代码没有问题啊。
aniver
2003-09-15
打赏
举报
回复
谢谢jishiping 啦,不过我用不了,我留言给你啦。请你帮我详细解答一下好么?
to zihan :能不能把你的stl.方法也写出来大家分享一下,谢谢啦。
zihan
2003-09-14
打赏
举报
回复
To jishiping(JSP 季世平)
你有没有什么不会的阿??下次留点便宜让我们拣嘛!
老季的方法不错,出了以为,还可以用stl.也很方便的
freshman2003
2003-09-14
打赏
举报
回复
我说老季,你反应也太快了点吧!
jishiping
2003-09-14
打赏
举报
回复
ListView 排序问题,不需要你自己写排序算法,直接调用TListView的函数CustomSort就可
以了,这个函数需要一个比较2个Item大小的函数作为参数。下面的代码,按下Button1时,
对TListView的第一列倒排序(由大到小)。
int __stdcall CustomSortProc(long Item1, long Item2, long ParamSort)
{
return -CompareText(((TListItem*)Item1)->Caption,
((TListItem*)Item2)->Caption);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListView1->CustomSort(CustomSortProc, 0);
}
C#
ListView
点击表头对数据进行
排序
功能的实现
代码
private void
listView
1_ColumnClick(object sender, ColumnClickEventArgs e) { if (
listView
1.Columns[e.Column].Tag == null) {
listView
1.Columns[e.Column].Tag = true; } bool tabK = (bool)
listView
1....
JAVA上百实例源码以及开源项目源
代码
Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序
代码
实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...
C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载
4.2 常用数组
排序
算法
117 实例099 使用选择
排序
法对一维数组进行
排序
117 实例100 使用冒泡
排序
法对一维数组进行
排序
118 实例101 使用快速
排序
法对一维数组进行
排序
119 实例102 使用直接插入法对一维数组进行
排序
...
JAVA上百实例源码以及开源项目
Java非对称加密源程序
代码
实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
C#编程经验技巧宝典
43 <br>0061 树的实现 44 <br>3.2
排序
48 <br>0062 如何实现选择
排序
算法
48 <br>0063 如何实现冒泡
排序
算法
49 <br>0064 如何实现快速
排序
算法
50 <br>0065 如何实现插入
排序
算法
...
VCL组件使用和开发
604
社区成员
13,460
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章