#include #include #include #include using std::vector; using std::set; void GibbsFactory::makeSampler(set &nodes, Graph const &graph, vector &samplers) const { for (set::iterator p(nodes.begin()); p != nodes.end(); ) { if (canSample(*p, graph)) { samplers.push_back(makeGibbsSampler(*p, graph)); nodes.erase(p++); //Avoid invalidating the iterator } else { ++p; } } }