DFS и замена на for_each

Как я могу заменить цикл DFS () на цикл for_each. Пожалуйста, дайте мне знать, если есть какой-либо другой эффективный способ создания графа или сайтов, обучающих Graph через STL, которые я могу в основном использовать для конкурентного программирования?

void DFS(int s)
{
visited[s] = true;
cout<<s<<"  \n";
for(vector<pair<int,int> >::iterator it=AdjList[s].begin();it!=AdjList[s].end();it++)
{
if(!visited[it->first])
{
//cout<<it->first<<endl;
DFS(it->first);
edgeTo[it->first]=s;
}
}
}

для всего кода http://ideone.com/iXO9QO

0

Решение

Этот цикл в DFS очень прост, поэтому я сомневаюсь, что для этого нужно использовать for_each.
И для вашей информации,

vector<pair<int,int> >::iterator it=AdjList[s].begin();

может быть просто

auto it=AdjList[s].begin();

Использование ключевого слова auto значительно уменьшит объем вашего кода.

Ну, лично я реализовал все основные графовые алгоритмы с помощью STL.
Видя ваш код, я говорю, что вы уже на правильном пути к конкурентному программированию.
Хотя boost предлагает все виды готовых библиотек, STL достаточно, чтобы можно было реализовать алгоритмы графов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector