Visual C++ Standard Library:next_permutation

对一个范围内的数据进行递增式的全排列。

template<class BidirectionalIterator>
   bool next_permutation(
      BidirectionalIterator _First,
      BidirectionalIterator _Last
   );
template<class BidirectionalIterator, class BinaryPredicate>
   bool next_permutation(
      BidirectionalIterator _First,
      BidirectionalIterator _Last,
      BinaryPredicate _Comp
   );

以上是他的两个重载函数接口定义。很类似于sort函数,C++STL中大多数这种比较函数都提供第二个版本,方便使用者自己定义比较函数。

参数说明:

_First:数据的起始位置;_Last:数据终止位置;_Comp:函数指针。

备注:

字典排序,保证了这个函数会生成一个最小递增的排序集合。

相应的,在程序库中还有一个prev_permutation函数。顾名思义,大家自己可以查阅下。

例示程序:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()

 vector<int> coll;
 for (int i=1;i<=9;++i)
  coll.push_back(i);

do
 {

for (int i=1;i<=9;++i)

cout<<coll[i];

cout<<endl;

}while (next_permutation(coll.begin(),coll.end()));

return 0;

}

生成了1...9的所有全排列。

原文地址:https://www.cnblogs.com/wxfasdic/p/1442776.html