是否有一些等效的库或函数可以为我提供像next_permutation这样的一组值的下一个组合?
解决方法
组合:来自Mark Nelson关于同一主题的文章,我们有next_combination
http://marknelson.us/2002/03/01/next-permutation
排列:从STL我们有std :: next_permutation
排列:从STL我们有std :: next_permutation
template <typename Iterator> inline bool next_combination(const Iterator first,Iterator k,const Iterator last) { if ((first == last) || (first == k) || (last == k)) return false; Iterator itr1 = first; Iterator itr2 = last; ++itr1; if (last == itr1) return false; itr1 = last; --itr1; itr1 = k; --itr2; while (first != itr1) { if (*--itr1 < *itr2) { Iterator j = k; while (!(*itr1 < *j)) ++j; std::iter_swap(itr1,j); ++itr1; ++j; itr2 = k; std::rotate(itr1,j,last); while (last != j) { ++j; ++itr2; } std::rotate(k,itr2,last); return true; } } std::rotate(first,k,last); return false; }