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