Просто хочу удалить дубликаты. Пул - это 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
. - person Yuushi   schedule 10.05.2013Pool
являетсяvector<pair<string, int>>
? - person Yuushi   schedule 10.05.2013std::set
работает либо на основеoperator<
, либо вы можете дать ему функцию сравнения, которую он может использовать. Это был бы довольно бесполезный набор, если бы он работал только с целыми числами! - person Yuushi   schedule 10.05.2013std::unque
. Это будет O(Nlog(N)) - person juanchopanza   schedule 10.05.2013