例如
struct RoleStr
{
DWORD RoleId;
CString RoleName;
};
list<RoleStr> ListI;
list<RoleStr>::iterator iterListI;这个里面的类型是结构体了..
这个时候我该如何写才能够使用
List中的成员函数 unique() 删除list中重复的元素
呢??
struct RoleStr
{
DWORD RoleId;
CString RoleName;
};
list<RoleStr> ListI;
list<RoleStr>::iterator iterListI;这个里面的类型是结构体了..
这个时候我该如何写才能够使用
List中的成员函数 unique() 删除list中重复的元素
呢??
解决方案 »
- VC 6.0中有关插入ATL对象问题
- 求助:CGridCtrl类的使用方法.
- 请问:在用installshield制作安装程序时,如何在IIS服务器上建立一个站点????
- 拜托各位高高手讲解以下这段有关操作注册表程序。小弟不胜感激,分数多多!!
- ****急,如何解决关闭CHtmlView而下载对话框不会自动关闭****
- 关于CDatabase类用什么函数读取数据库中的内容
- 曾经在CSDN看到过<<windows学习笔记>>,怎么找不到了?
- 请各位高手推荐基本关于vc 的数据库编程的书
- 现在我的mdi程序因为有opengl的文档,所以开启该文档很慢,怎样在这个开启过程中设置鼠标?
- 求大家帮个忙"网友",怎么翻译!谢谢
- 如何动态创建编辑框或者其他控件?
- 如何点击按钮显示另外一个对话框然后销毁,循环这个过程
#include <list>
#include <algorithm>
using namespace std;struct RoleStr
{
RoleStr(DWORD id, CString name) : RoleId(id), RoleName(name)
{ }
DWORD RoleId;
CString RoleName; bool operator<(RoleStr str)
{
return RoleId < str.RoleId;
} bool operator==(RoleStr str)
{
return (RoleId == str.RoleId) && (RoleName == str.RoleName);
}
};list<RoleStr> ListI;
list<RoleStr>::iterator iterListI;bool MyFun1(RoleStr str1, RoleStr str2)
{
return str1 < str2;
}bool MyFun2(RoleStr str1, RoleStr str2)
{
return (str1 == str2);
}int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
RoleStr str1(1, _T("A"));
RoleStr str2(2, _T("B"));
RoleStr str3(3, _T("C"));
RoleStr str22(2, _T("B"));
RoleStr str4(4, _T("D"));
RoleStr str11(1, _T("A"));
ListI.push_back(str1);
ListI.push_back(str2);
ListI.push_back(str3);
ListI.push_back(str22);
ListI.push_back(str4);
ListI.push_back(str11); cout<<"Before: "<<endl; TCHAR buf[256] = {0};
DWORD dwWrite = 0;
for(iterListI = ListI.begin(); iterListI != ListI.end(); ++iterListI)
{
_stprintf_s(buf, _countof(buf), _T("RoleId: %d, RoleName: %s\n"), iterListI->RoleId, iterListI->RoleName);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), buf, _tcslen(buf), &dwWrite, NULL);
} ListI.sort(MyFun1); list<RoleStr>::iterator iterEnd = unique(ListI.begin(), ListI.end(), MyFun2); cout<<"After: "<<endl; for(iterListI = ListI.begin(); iterListI != iterEnd; ++iterListI)
{
_stprintf_s(buf, _countof(buf), _T("RoleId: %d, RoleName: %s\n"), iterListI->RoleId, iterListI->RoleName);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), buf, _tcslen(buf), &dwWrite, NULL);
}
return 0;
}