我一直在寻找一种有效的解决方案,从C++列表中删除重复项。从C++列表中删除重复项
该列表由指针,其具有的属性ID的类对象的。我想删除基于该ID的重复项。
我的目的,STL的list的独特方法,将工作中,我们可以通过一个BinaryPredicate。即
空隙独特(BinPred PR);
我搜索有关如何使用此方法在互联网上,正得到中,我们可以声明函数返回布尔值,并使用该功能作为二元谓词的“名称”的一个例子。
但它不工作。
实际上这是什么二元谓词和如何使用它? ... 任何帮助将不胜感激。 这里是代码片段:
class SP_MDI_View {
..
..
bool removeDupli(SP_DS_Node*, SP_DS_Node*);
bool DoReductionGSPN(SP_DS_Node*, SP_ListNode*, SP_DS_Node*);
..
..
}
SP_MDI_View::DoReduction(...) {
SP_ListNode setZ; // typedef list<SP_DS_Node*> SP_ListNode, where SP_DS_Node is some other class
setZ.clear();
setZ.merge(tempsubset);
setZ.merge(setX);
setZ.push_back(*cs_iter);
setZ.unique(removeDupli); //Error here
}
bool SP_MDI_View::removeDupli(SP_DS_Node* first, SP_DS_Node* second) {
return ((first->GetId())==(second->GetId()));
}
这是我所说的例子的链接: http://www.cplusplus.com/reference/stl/list/unique/ 这是有效的吗? mylist.unique(same_integral_part); 我的编译器没有把它当作一个有效的语句。 – 2010-07-15 23:52:56
你是什么意思“不工作”?编译错误?段错误? – SoapBox 2010-07-15 23:53:48
发布**你的**代码,是一个成员函数吗?范围是什么? – 2010-07-16 00:04:21