C++STLアルゴリズム編next_permutation、prev_permutationはシーケンスを次の文字のシーケンスアルゴリズムに変更します

13051 ワード

next_permutation(beg,end)とprev_permutation(beg,end)の特徴
1:反復器タイプ:双方向反復器2:戻り値タイプ:bool 3:アルゴリズム機能:現在のシーケンスを次の文字列または上の文字列列に変更4:複雑度:線形複雑度
#include
#include
#include
using namespace std;

int main()
{
	vector<int>coll = { 1,2,3 };
	copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

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

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;
	
	prev_permutation(coll.begin(), coll.end());

	copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
	cout << endl;

}