У меня есть list<pair<int , double>> lSeedList
и unordered_set<int> sToDelete
. Я хочу удалить из списка пары, первый член которых равен int в sToDelete. В настоящее время я использую следующий код:
void updateSL(list<pair<int, double> >& lSeedList, const unordered_set<int>& sAddedFacets)
{
list<pair<int, double> >::iterator it = lSeedList.begin();
while(it != lSeedList.end())
{
if(sAddedFacets.count(it->first) != 0)
it = lSeedList.erase(it);
else
++it;
}
}
Есть ли способ ускорить этот код? Можно ли эффективно распараллелить его с помощью OpenMP (разделив список в каждом потоке, а затем объединив их с помощью соединения)?
Я использую Visual Studio 2010 под Windows 7. Размер lSeedList в начале составляет ~ 1 миллион, а размер sToDelete - ~ 10000. Int в паре действует как уникальный идентификатор.