C++ RemovedUpplicates仅在位置为1和2时删除
这是一个延续。不管怎么说,我已经到了删除重复的地步,但它只删除一个重复的位置,如果是一个或两个。有人能看到什么能让这一切发生吗。以下是他的职能:C++ RemovedUpplicates仅在位置为1和2时删除,c++,C++,这是一个延续。不管怎么说,我已经到了删除重复的地步,但它只删除一个重复的位置,如果是一个或两个。有人能看到什么能让这一切发生吗。以下是他的职能: void RemoveDuplicates(DoublyLinkedListIterator<Datatype> m_itr, string searchByFirstName, string searchBySecondName) { for (m_itr.Start(); m_itr.Valid(); m_itr.Forth()
void RemoveDuplicates(DoublyLinkedListIterator<Datatype> m_itr, string searchByFirstName, string searchBySecondName)
{
for (m_itr.Start(); m_itr.Valid(); m_itr.Forth())
{
if ((m_itr.Item().getFirstName() == searchByFirstName )&& (m_itr.Item().getSecondName() == searchBySecondName))
{
DoublyLinkedListIterator<Datatype> toDelete = m_itr;
m_itr.Forth();
Remove(toDelete);
}
break;
}
}
void RemoveDuplicates(双链接标识符m_itr、字符串searchByFirstName、字符串searchBySecondName)
{
for(m_itr.Start();m_itr.Valid();m_itr.Forth())
{
if((m_itr.Item().getFirstName()=searchByFirstName)和&(m_itr.Item().getSecondName()=searchBySecondName))
{
双链接标识符toDelete=m_itr;
m_itr.Forth();
移除(toDelete);
}
打破
}
}
在循环的第一次迭代后,您将调用break
,因此它将只执行一次迭代。如果我不执行此操作,则在第一次删除重复项后,它将开始删除两个对象。我不知道您刚才说的是什么,如果它们在列表中不在一起,它只会删除两个。哈哈,这很容易出错,我删除了中断,就像我上面所说的,如果它们在列表中不在一起,它会同时删除副本和我想要保留的副本。