CtrlList控件 如何高效去除重复项?

linyuexiang6696 2017-05-27 01:45:36
列表控件有正常和异常两类数据,

我先清除异常项的数据,然后再逐个过滤正常项的重复

for(i=0;i<dlg->m_list.GetItemCount();i++)
{
if(dlg->m_list.GetItemText(i,2).Find("异常")==-1)
{
dlg->m_list.DeleteItem(i);
i--;
}
}

int j=0;
CString str1,str2;
for(i=0;i<dlg->m_list.GetItemCount()-1;i++)
{
str1=dlg->m_list.GetItemText(i,1);
for(j=i+1;j<dlg->m_list.GetItemCount();j++)
{
str2=dlg->m_list.GetItemText(j,1);
if(str1==str2)
{
dlg->m_list.DeleteItem(j);
j--;
}
}
}

这样效率很低,几千条数据就会用1-2分钟的时间,有没有其他高效的方法啊?
...全文
339 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36634306 2017-06-01
  • 打赏
  • 举报
回复
引用 2 楼 linyuexiang6696 的回复:
[quote=引用 1 楼 oyljerry 的回复:] 直接把数据先放到set中去重,然后再插入CListCtrl。而不是通过CListCtrl来一条条处理
什么意思,不太明白,麻烦说的详细点,谢谢了[/quote]set是一个容器,set 中不允许有重复值,存入set的过程就已经去了重。
linyuexiang6696 2017-05-28
  • 打赏
  • 举报
回复
zgl7903 2017-05-27
  • 打赏
  • 举报
回复
建议 插入列表之前去对比和过滤
linyuexiang6696 2017-05-27
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
直接把数据先放到set中去重,然后再插入CListCtrl。而不是通过CListCtrl来一条条处理
什么意思,不太明白,麻烦说的详细点,谢谢了
oyljerry 2017-05-27
  • 打赏
  • 举报
回复
直接把数据先放到set中去重,然后再插入CListCtrl。而不是通过CListCtrl来一条条处理

19,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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