stdnext 排列
template< class Iterator >
bool next_permutation( Iterator first, Iterator last );
template< class Iterator, class Compare >
bool next_permutation( Iterator first, Iterator last, Compare cmpFun );
效果:
将范围[first,last]的数据序列筛选到下一个按字典顺序排列的更高排列。如果提供了 cmpFun
,则自定义排列规则。
参数:
first
-要置换的范围的开头,包括
last
- 要置换的范围的结尾,独占
返回值:
如果存在此类排列,则返回 true。
否则,范围被转换为按字典顺序排列的最小排列并返回 false。
复杂度:
O(n)
,n 是从 first
到 last
的距离。
示例 :
std::vector< int > v { 1, 2, 3 };
do
{
for( int i = 0; i < v.size(); i += 1 )
{
std::cout << v[i];
}
std::cout << std::endl;
}while( std::next_permutation( v.begin(), v.end() ) );
以字典顺序递增的顺序打印 1,2,3 的所有排列情况。
输出:
123
132
213
231
312
321