
"Peter Foelsche" <foelsche@sbcglobal.net> wrote in message news:iv8fia$6gl$1@dough.gmane.org...
"Peter Foelsche" <foelsche@sbcglobal.net> wrote in message news:iv8fap$5ju$1@dough.gmane.org...
something was missing:
std::list<object*> sort(std::list<object*> _sList) { std::set<object*> sSet; std::list<object*> sSorted; while (_sList.size()) for (std::list<object*>::iterator p = _sList.begin(), pNext = p, pEnd = _sList.end(); p != pEnd; p = pNext) { ++pNext; bool bFound = false; for (std::set<object*>::const_iterator p1 = (*p)->m_sPredecessors.begin(), p1End = (*p)->m_sPredecessors.end(); p1 != p1End; ++p1) if (sSet.find(*p1) == sSet.end()) { bFound = true; break; } if (!bFound) { sSorted.push_back(*p); sSet.insert(*p); _sList.erase(p); } } return sSorted; }
ok -- one could use std::includes http://www.cplusplus.com/reference/algorithm/includes/ to find out if all elements of the set attached to the object currently considered are contained in the local sSet instead of iterating...