歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++ STL algorithm庫中 next_permutation()用法 注意事項

C++ STL algorithm庫中 next_permutation()用法 注意事項

日期:2017/3/1 9:58:59   编辑:Linux編程

有的人用C++ algorithm庫中的next_permutation()函數得到全排列時發現最後得到的全排列老是不夠數,不知道為什麼,還以為標准庫函數有錯呢,其實這個標准庫函數是有前置條件的,即參數必須是為非降序排列的。

至於為什麼,我們看下邊。

next_permutation()函數對參數進行下一個排列,如果到頭了返回false,否則返回true,

但是它怎麼知道排列到頭了呢,原來他是按照增序對參數的每一個值進行排列的,如果參數為完全降序的話,就認為到頭了,會返回false。

所以我們在求排列的時候一定要先進行升序排序,這樣才能正確的得到所有的排列方式。

如string s="bca";

sort(s.begin(),s.end());

cout<<s<<endl;

while(next_permutation(s))

{

cout<<s<<endl;

}

如果想了解next_permutation的實現原理,可以參考

C++ STL next_permutation的實現原理 http://www.linuxidc.com/Linux/2013-04/82498.htm

Copyright © Linux教程網 All Rights Reserved