我只想删除重复项。池是vector<pair<string, int>>
,但我似乎在某种情况下错过了向量开头的一些元素。有人能验证一下删除的逻辑吗?谢谢:)
Pool Master::eliminateDuplicates(Pool generation)
{
for(int i = 0; i < generation.size(); i++)
{
string current = generation.at(i).first;
for(int j = i; j < generation.size(); j++)
{
if(j == i)
{
continue;
}
else
{
string temp = generation.at(j).first;
if(current.compare(temp) == 0)
{
Pool::iterator iter = generation.begin() + j;
generation.erase(iter);
}
}
}
}
return generation;
}
O(n^2)
方式更快)的方法是将所有元素添加到std::set
中,然后再转回std::vector
。 - YuushiPool
是一个vector<pair<string, int>>
? - Yuushistd::unique
。这将是O(Nlog(N))。 - juanchopanza